diff --git a/schema/operations/CalendarGetVideoInNotFinalStatus.gql b/schema/operations/CalendarGetVideoInNotFinalStatus.gql new file mode 100644 index 0000000..a3f565b --- /dev/null +++ b/schema/operations/CalendarGetVideoInNotFinalStatus.gql @@ -0,0 +1,11 @@ +query CalendarGetVideoInNotFinalStatus($filledChecklistId: ID!) { + sc21StudentTaskCheck { + getVideoInNotFinalStatus(filledChecklistId: $filledChecklistId) { + onlineVideoId + link + status + statusDetails + updateDateTime + } + } +} \ No newline at end of file diff --git a/schema/operations/CalendarUpdateFilledChecklistWithOnlineReview.gql b/schema/operations/CalendarUpdateFilledChecklistWithOnlineReview.gql new file mode 100644 index 0000000..b0f5c8d --- /dev/null +++ b/schema/operations/CalendarUpdateFilledChecklistWithOnlineReview.gql @@ -0,0 +1,10 @@ +mutation CalendarUpdateFilledChecklistWithOnlineReview($filledChecklistId: ID!, $onlineReviewId: ID!) { + school21 { + updateFilledChecklistWithOnlineReview( + filledChecklistId: $filledChecklistId + onlineReviewId: $onlineReviewId + ) { + checklistId + } + } +} \ No newline at end of file diff --git a/schema/operations/EventsGetActivityFeedback.gql b/schema/operations/EventsGetActivityFeedback.gql new file mode 100644 index 0000000..72741ff --- /dev/null +++ b/schema/operations/EventsGetActivityFeedback.gql @@ -0,0 +1,16 @@ +query EventsGetActivityFeedback($activityEventId: ID!, $page: PagingInput!) { + event { + getActivityEventFeedback(activityEventId: $activityEventId, page: $page) { + id + user { + id + login + email + } + comment + rating + createDate + } + getActivityEventFeedbackCount(activityEventId: $activityEventId) + } +} \ No newline at end of file diff --git a/schema/operations/EventsGetStudents.gql b/schema/operations/EventsGetStudents.gql new file mode 100644 index 0000000..dcca4ae --- /dev/null +++ b/schema/operations/EventsGetStudents.gql @@ -0,0 +1,15 @@ +query EventsGetStudents($activityEventId: ID!, $studentType: StudentEventTypeEnum!, $page: PagingInput!) { + event { + getEventStudents( + eventId: $activityEventId + page: $page + studentType: $studentType + ) { + User { + id + login + email + } + } + } +} \ No newline at end of file diff --git a/schema/operations/GetTop5AndMeCoalitionTournamentMembers.gql b/schema/operations/GetTop5AndMeCoalitionTournamentMembers.gql new file mode 100644 index 0000000..4834310 --- /dev/null +++ b/schema/operations/GetTop5AndMeCoalitionTournamentMembers.gql @@ -0,0 +1,36 @@ +fragment CompetitioncoalitionUserInfo on User { + id + login + avatarUrl + userExperience { + level { + id + levelCode + } + } +} + +fragment GetTop5AndMeCoalitionTournamentMembersInfo on CoalitionMemberPowerRank { + id + rank + power { + id + points + coalitionMemberUser { + ...CompetitioncoalitionUserInfo + } + } +} + +query GetTop5AndMeCoalitionTournamentMembers($gameCoalitionId: Int!, $gameTournamentId: Int!) { + student { + getTop5AndMeCoalitionTournamentMembers( + gameCoalitionId: $gameCoalitionId + gameTournamentId: $gameTournamentId + ) { + top5 { + ...GetTop5AndMeCoalitionTournamentMembersInfo + } + } + } +} \ No newline at end of file diff --git a/schema/operations/ProjectMapGetStudentGraphState.gql b/schema/operations/ProjectMapGetStudentGraphState.gql new file mode 100644 index 0000000..b970fba --- /dev/null +++ b/schema/operations/ProjectMapGetStudentGraphState.gql @@ -0,0 +1,65 @@ +fragment GraphJson on HolyGraphJSON { + nodes { + id + label + items { + id + code + handles + entityType + entityId + parentNodeCodes + skills { + id + name + color + textColor + } + goal { + projectId + projectName + projectDescription + projectPoints + goalExecutionType + duration + projectDate + projectState + isMandatory + projectDate + } + course { + projectId + projectName + projectDescription + projectPoints + projectPoints + courseType + duration + projectDate + projectState + projectDate + localCourseId + } + parentNodeCodes + } + position { + x + y + } + } + edges { + id + source + target + sourceHandle + targetHandle + } +} + +query ProjectMapGetStudentGraphState($studentId: UUID, $stageGroupId: Int) { + holyGraph { + getStudentStateGraph(studentId: $studentId, stageGroupId: $stageGroupId) { + ...GraphJson + } + } +} \ No newline at end of file diff --git a/schema/operations/ProjectMapGetStudentStageGroups.gql b/schema/operations/ProjectMapGetStudentStageGroups.gql new file mode 100644 index 0000000..d6fbe49 --- /dev/null +++ b/schema/operations/ProjectMapGetStudentStageGroups.gql @@ -0,0 +1,12 @@ +query ProjectMapGetStudentStageGroups($studentId: UUID!) { + school21 { + loadStudentStageGroups(studentId: $studentId) { + stageGroupS21 { + waveId + waveName + eduForm + active + } + } + } +} \ No newline at end of file diff --git a/schema/operations/StartP2pCheck.gql b/schema/operations/StartP2pCheck.gql new file mode 100644 index 0000000..883c9ac --- /dev/null +++ b/schema/operations/StartP2pCheck.gql @@ -0,0 +1,5 @@ +mutation StartP2pCheck($filledChecklistId: ID!) { + student { + startP2pCheck(filledChecklistId: $filledChecklistId) + } +} \ No newline at end of file diff --git a/schema/operations/StudentProfileGetUserRestrictionsByUserIdAndSchoolId.gql b/schema/operations/StudentProfileGetUserRestrictionsByUserIdAndSchoolId.gql new file mode 100644 index 0000000..c15c37b --- /dev/null +++ b/schema/operations/StudentProfileGetUserRestrictionsByUserIdAndSchoolId.gql @@ -0,0 +1,13 @@ +query StudentProfileGetUserRestrictionsByUserIdAndSchoolId($userId: UUID!, $schoolId: UUID!) { + school21 { + getUserRestrictionsByUserIdAndSchoolId(userId: $userId, schoolId: $schoolId) { + restrictionId + restrictionType + userId + schoolId + isActive + createdTs + updatedTs + } + } +} \ No newline at end of file diff --git a/schema/operations/acceptInvitationToTeam.gql b/schema/operations/acceptInvitationToTeam.gql new file mode 100644 index 0000000..a6d9c7f --- /dev/null +++ b/schema/operations/acceptInvitationToTeam.gql @@ -0,0 +1,5 @@ +mutation acceptInvitationToTeam($teamId: UUID!) { + student { + acceptInvitation(teamId: $teamId) + } +} \ No newline at end of file diff --git a/schema/operations/addToFavourites.gql b/schema/operations/addToFavourites.gql new file mode 100644 index 0000000..3094e8e --- /dev/null +++ b/schema/operations/addToFavourites.gql @@ -0,0 +1,7 @@ +mutation addToFavourites($videoId: UUID!) { + mediateka { + addBookmark(itemId: $videoId) { + status + } + } +} \ No newline at end of file diff --git a/schema/operations/bonusesGetBadgesWithFakePublicProfile.gql b/schema/operations/bonusesGetBadgesWithFakePublicProfile.gql new file mode 100644 index 0000000..eefea32 --- /dev/null +++ b/schema/operations/bonusesGetBadgesWithFakePublicProfile.gql @@ -0,0 +1,53 @@ +fragment UserAchievements on UserBadgeAward { + id + histories { + id + rewardDate + awardPoints + } + badge { + id + kind { + id + name + order + } + name + description + avatarUrl + bigAvatarUrl + } + award { + id + awardCondition { + id + description + } + awardBounties { + awardBountyId + description + cookies + coins + experienceValue + coalitionPoints + softSkillPowers { + softSkillId + power + softSkill { + id + name + } + } + } + } + points + isFake +} + +query bonusesGetBadgesWithFakePublicProfile($userId: UUID) { + school21 { + getBadgesWithFakePublicProfile(userId: $userId) { + ...UserAchievements + } + } +} \ No newline at end of file diff --git a/schema/operations/bonusesGetUserIdByLogin.gql b/schema/operations/bonusesGetUserIdByLogin.gql new file mode 100644 index 0000000..23e962e --- /dev/null +++ b/schema/operations/bonusesGetUserIdByLogin.gql @@ -0,0 +1,5 @@ +query bonusesGetUserIdByLogin($login: String!) { + school21 { + getUserIdByLogin(login: $login) + } +} \ No newline at end of file diff --git a/schema/operations/bookPenaltySlot.gql b/schema/operations/bookPenaltySlot.gql new file mode 100644 index 0000000..8261849 --- /dev/null +++ b/schema/operations/bookPenaltySlot.gql @@ -0,0 +1,5 @@ +mutation bookPenaltySlot($penaltyId: ID!, $slotId: ID!) { + penalty { + setPenaltyBooking(penaltyId: $penaltyId, slotId: $slotId) + } +} \ No newline at end of file diff --git a/schema/operations/calendarAddBookingToEventSlot.gql b/schema/operations/calendarAddBookingToEventSlot.gql new file mode 100644 index 0000000..867092a --- /dev/null +++ b/schema/operations/calendarAddBookingToEventSlot.gql @@ -0,0 +1,12 @@ +mutation calendarAddBookingToEventSlot($answerId: ID!, $startTime: DateTime!, $wasStaffSlotChosen: Boolean!, $isOnline: Boolean) { + student { + addBookingP2PToEventSlot( + answerId: $answerId + startTime: $startTime + wasStaffSlotChosen: $wasStaffSlotChosen + isOnline: $isOnline + ) { + id + } + } +} \ No newline at end of file diff --git a/schema/operations/calendarAddCodeReviewToEventSlot.gql b/schema/operations/calendarAddCodeReviewToEventSlot.gql new file mode 100644 index 0000000..f5d7c6d --- /dev/null +++ b/schema/operations/calendarAddCodeReviewToEventSlot.gql @@ -0,0 +1,10 @@ +mutation calendarAddCodeReviewToEventSlot($studentGoalId: ID!, $startTime: DateTime!) { + student { + addBookingCodeReviewToEventSlot( + studentGoalId: $studentGoalId + startTime: $startTime + ) { + id + } + } +} \ No newline at end of file diff --git a/schema/operations/calendarAddEvent.gql b/schema/operations/calendarAddEvent.gql new file mode 100644 index 0000000..65be8ae --- /dev/null +++ b/schema/operations/calendarAddEvent.gql @@ -0,0 +1,174 @@ +fragment VerifiableStudentItem on VerifiableStudent { + userId + login + avatarUrl + levelCode + isTeamLead + cookiesCount + codeReviewPoints + school { + shortName + } +} + +fragment CalendarReviewUser on User { + id + login +} + +fragment Penalty on Penalty { + comment + id + duration + status + startTime + createTime + penaltySlot { + currentStudentsCount + description + duration + startTime + id + endTime + } + reasonId +} + +fragment CalendarEventActivity on ActivityEvent { + activityEventId + eventId + name + beginDate + endDate + isRegistered + description + currentStudentsCount + maxStudentCount + location + updateDate + isWaitListActive + isInWaitList + stopRegisterDate +} + +fragment CalendarEventExam on Exam { + examId + eventId + beginDate + endDate + name + location + currentStudentsCount + maxStudentCount + updateDate + goalId + goalName + isWaitListActive + isInWaitList + stopRegisterDate +} + +fragment CalendarReviewBooking on CalendarBooking { + id + answerId + eventSlotId + task { + id + goalId + goalName + studentTaskAdditionalAttributes { + cookiesCount + } + assignmentType + } + eventSlot { + id + start + end + event { + eventUserRole + } + school { + shortName + } + } + verifierUser { + ...CalendarReviewUser + } + verifiableInfo { + verifiableStudents { + ...VerifiableStudentItem + } + team { + name + } + } + bookingStatus + isOnline + vcLinkUrl + additionalChecklist { + filledChecklistId + filledChecklistStatusRecordingEnum + } +} + +fragment CalendarEvent on CalendarEvent { + id + start + end + description + eventType + eventCode + eventSlots { + id + type + start + end + } + bookings { + ...CalendarReviewBooking + } + exam { + ...CalendarEventExam + } + studentCodeReview { + studentGoalId + } + activity { + ...CalendarEventActivity + studentFeedback { + id + rating + comment + } + status + activityType + isMandatory + isWaitListActive + isVisible + comments { + type + createTs + comment + } + organizers { + id + login + } + } + goals { + goalId + goalName + } + penalty { + ...Penalty + } +} + +mutation calendarAddEvent($start: DateTime!, $end: DateTime!) { + student { + addEventToTimetable(start: $start, end: $end) { + ...CalendarEvent + } + } +} \ No newline at end of file diff --git a/schema/operations/calendarChangeEventSlot.gql b/schema/operations/calendarChangeEventSlot.gql new file mode 100644 index 0000000..08cb05c --- /dev/null +++ b/schema/operations/calendarChangeEventSlot.gql @@ -0,0 +1,174 @@ +fragment VerifiableStudentItem on VerifiableStudent { + userId + login + avatarUrl + levelCode + isTeamLead + cookiesCount + codeReviewPoints + school { + shortName + } +} + +fragment CalendarReviewUser on User { + id + login +} + +fragment Penalty on Penalty { + comment + id + duration + status + startTime + createTime + penaltySlot { + currentStudentsCount + description + duration + startTime + id + endTime + } + reasonId +} + +fragment CalendarEventActivity on ActivityEvent { + activityEventId + eventId + name + beginDate + endDate + isRegistered + description + currentStudentsCount + maxStudentCount + location + updateDate + isWaitListActive + isInWaitList + stopRegisterDate +} + +fragment CalendarEventExam on Exam { + examId + eventId + beginDate + endDate + name + location + currentStudentsCount + maxStudentCount + updateDate + goalId + goalName + isWaitListActive + isInWaitList + stopRegisterDate +} + +fragment CalendarReviewBooking on CalendarBooking { + id + answerId + eventSlotId + task { + id + goalId + goalName + studentTaskAdditionalAttributes { + cookiesCount + } + assignmentType + } + eventSlot { + id + start + end + event { + eventUserRole + } + school { + shortName + } + } + verifierUser { + ...CalendarReviewUser + } + verifiableInfo { + verifiableStudents { + ...VerifiableStudentItem + } + team { + name + } + } + bookingStatus + isOnline + vcLinkUrl + additionalChecklist { + filledChecklistId + filledChecklistStatusRecordingEnum + } +} + +fragment CalendarEvent on CalendarEvent { + id + start + end + description + eventType + eventCode + eventSlots { + id + type + start + end + } + bookings { + ...CalendarReviewBooking + } + exam { + ...CalendarEventExam + } + studentCodeReview { + studentGoalId + } + activity { + ...CalendarEventActivity + studentFeedback { + id + rating + comment + } + status + activityType + isMandatory + isWaitListActive + isVisible + comments { + type + createTs + comment + } + organizers { + id + login + } + } + goals { + goalId + goalName + } + penalty { + ...Penalty + } +} + +mutation calendarChangeEventSlot($id: ID!, $start: DateTime!, $end: DateTime!) { + student { + changeEventSlot(eventSlotId: $id, start: $start, end: $end) { + ...CalendarEvent + } + } +} \ No newline at end of file diff --git a/schema/operations/calendarDeleteEventSlot.gql b/schema/operations/calendarDeleteEventSlot.gql new file mode 100644 index 0000000..322c827 --- /dev/null +++ b/schema/operations/calendarDeleteEventSlot.gql @@ -0,0 +1,5 @@ +mutation calendarDeleteEventSlot($eventSlotId: ID!) { + student { + deleteEventSlot(eventSlotId: $eventSlotId) + } +} \ No newline at end of file diff --git a/schema/operations/calendarGetCodeReviewData.gql b/schema/operations/calendarGetCodeReviewData.gql new file mode 100644 index 0000000..1d4c604 --- /dev/null +++ b/schema/operations/calendarGetCodeReviewData.gql @@ -0,0 +1,14 @@ +query calendarGetCodeReviewData($studentGoalId: ID!) { + student { + getStudentModuleByStudentGoalId(studentGoalId: $studentGoalId) { + moduleTitle + currentTask { + task { + studentTaskAdditionalAttributes { + codeReviewDuration + } + } + } + } + } +} \ No newline at end of file diff --git a/schema/operations/calendarGetEvents.gql b/schema/operations/calendarGetEvents.gql new file mode 100644 index 0000000..0159d89 --- /dev/null +++ b/schema/operations/calendarGetEvents.gql @@ -0,0 +1,174 @@ +fragment VerifiableStudentItem on VerifiableStudent { + userId + login + avatarUrl + levelCode + isTeamLead + cookiesCount + codeReviewPoints + school { + shortName + } +} + +fragment CalendarReviewUser on User { + id + login +} + +fragment Penalty on Penalty { + comment + id + duration + status + startTime + createTime + penaltySlot { + currentStudentsCount + description + duration + startTime + id + endTime + } + reasonId +} + +fragment CalendarEventActivity on ActivityEvent { + activityEventId + eventId + name + beginDate + endDate + isRegistered + description + currentStudentsCount + maxStudentCount + location + updateDate + isWaitListActive + isInWaitList + stopRegisterDate +} + +fragment CalendarEventExam on Exam { + examId + eventId + beginDate + endDate + name + location + currentStudentsCount + maxStudentCount + updateDate + goalId + goalName + isWaitListActive + isInWaitList + stopRegisterDate +} + +fragment CalendarReviewBooking on CalendarBooking { + id + answerId + eventSlotId + task { + id + goalId + goalName + studentTaskAdditionalAttributes { + cookiesCount + } + assignmentType + } + eventSlot { + id + start + end + event { + eventUserRole + } + school { + shortName + } + } + verifierUser { + ...CalendarReviewUser + } + verifiableInfo { + verifiableStudents { + ...VerifiableStudentItem + } + team { + name + } + } + bookingStatus + isOnline + vcLinkUrl + additionalChecklist { + filledChecklistId + filledChecklistStatusRecordingEnum + } +} + +fragment CalendarEvent on CalendarEvent { + id + start + end + description + eventType + eventCode + eventSlots { + id + type + start + end + } + bookings { + ...CalendarReviewBooking + } + exam { + ...CalendarEventExam + } + studentCodeReview { + studentGoalId + } + activity { + ...CalendarEventActivity + studentFeedback { + id + rating + comment + } + status + activityType + isMandatory + isWaitListActive + isVisible + comments { + type + createTs + comment + } + organizers { + id + login + } + } + goals { + goalId + goalName + } + penalty { + ...Penalty + } +} + +query calendarGetEvents($from: DateTime!, $to: DateTime!) { + calendarEventS21 { + getMyCalendarEvents(from: $from, to: $to) { + ...CalendarEvent + } + } +} \ No newline at end of file diff --git a/schema/operations/calendarGetExams.gql b/schema/operations/calendarGetExams.gql new file mode 100644 index 0000000..771ee20 --- /dev/null +++ b/schema/operations/calendarGetExams.gql @@ -0,0 +1,24 @@ +fragment CalendarExam on Exam { + examId + eventId + beginDate + endDate + name + location + maxStudentCount + currentStudentsCount + updateDate + goalId + goalName + isWaitListActive + isInWaitList + stopRegisterDate +} + +query calendarGetExams($from: DateTime!, $to: DateTime!) { + student { + getExams(from: $from, to: $to) { + ...CalendarExam + } + } +} \ No newline at end of file diff --git a/schema/operations/calendarGetModule.gql b/schema/operations/calendarGetModule.gql new file mode 100644 index 0000000..7d9f0ad --- /dev/null +++ b/schema/operations/calendarGetModule.gql @@ -0,0 +1,32 @@ +fragment CalendarStudentTaskAdditionalAttributes on StudentTaskAdditionalAttributes { + cookiesCount +} + +fragment CalendarStudentTask on StudentTask { + id + taskId + task { + id + studentTaskAdditionalAttributes { + ...CalendarStudentTaskAdditionalAttributes + } + assignmentType + } + lastAnswer { + id + } +} + +query calendarGetModule($moduleId: ID!) { + student { + getModuleById(goalId: $moduleId) { + id + moduleTitle + subjectTitle + goalExecutionType + currentTask { + ...CalendarStudentTask + } + } + } +} \ No newline at end of file diff --git a/schema/operations/calendarGetMyBookings.gql b/schema/operations/calendarGetMyBookings.gql new file mode 100644 index 0000000..eb084bf --- /dev/null +++ b/schema/operations/calendarGetMyBookings.gql @@ -0,0 +1,69 @@ +fragment VerifiableStudentItem on VerifiableStudent { + userId + login + avatarUrl + levelCode + isTeamLead + cookiesCount + codeReviewPoints + school { + shortName + } +} + +fragment CalendarReviewUser on User { + id + login +} + +fragment CalendarReviewBooking on CalendarBooking { + id + answerId + eventSlotId + task { + id + goalId + goalName + studentTaskAdditionalAttributes { + cookiesCount + } + assignmentType + } + eventSlot { + id + start + end + event { + eventUserRole + } + school { + shortName + } + } + verifierUser { + ...CalendarReviewUser + } + verifiableInfo { + verifiableStudents { + ...VerifiableStudentItem + } + team { + name + } + } + bookingStatus + isOnline + vcLinkUrl + additionalChecklist { + filledChecklistId + filledChecklistStatusRecordingEnum + } +} + +query calendarGetMyBookings($from: DateTime!, $to: DateTime!) { + student { + getMyCalendarBookings(from: $from, to: $to) { + ...CalendarReviewBooking + } + } +} \ No newline at end of file diff --git a/schema/operations/calendarGetMyReviews.gql b/schema/operations/calendarGetMyReviews.gql new file mode 100644 index 0000000..5214576 --- /dev/null +++ b/schema/operations/calendarGetMyReviews.gql @@ -0,0 +1,90 @@ +fragment ProjectTeamMember on User { + id + avatarUrl + login + userExperience { + level { + id + range { + levelCode + } + } + cookiesCount + codeReviewPoints + } + activeSchoolShortName +} + +fragment ProjectTeamMembers on ProjectTeamMembers { + id + teamLead { + ...ProjectTeamMember + } + members { + ...ProjectTeamMember + } + invitedUsers { + ...ProjectTeamMember + } + teamName + teamStatus + minTeamMemberCount + maxTeamMemberCount +} + +fragment UserInBooking on User { + id + login + avatarUrl + userExperience { + level { + id + range { + levelCode + } + } + } +} + +fragment Review on CalendarBooking { + id + answerId + eventSlot { + id + start + end + } + task { + id + title + assignmentType + goalId + goalName + studentTaskAdditionalAttributes { + cookiesCount + } + } + verifierUser { + ...UserInBooking + } + verifiableStudent { + id + user { + ...UserInBooking + } + } + team { + ...ProjectTeamMembers + } + bookingStatus + isOnline + vcLinkUrl +} + +query calendarGetMyReviews($to: DateTime, $limit: Int) { + student { + getMyUpcomingBookings(to: $to, limit: $limit) { + ...Review + } + } +} \ No newline at end of file diff --git a/schema/operations/calendarGetNameLessStudentTimeslotsForReview.gql b/schema/operations/calendarGetNameLessStudentTimeslotsForReview.gql new file mode 100644 index 0000000..0a74da2 --- /dev/null +++ b/schema/operations/calendarGetNameLessStudentTimeslotsForReview.gql @@ -0,0 +1,27 @@ +fragment CalendarNameLessTimeslot on CalendarNamelessTimeSlot { + start + end + validStartTimes + staffSlot +} + +fragment ProjectReviewsInfo on ProjectReviewsInfo { + reviewByStudentCount + relevantReviewByStudentsCount + reviewByInspectionStaffCount + relevantReviewByInspectionStaffCount +} + +query calendarGetNameLessStudentTimeslotsForReview($from: DateTime!, $taskId: ID!, $to: DateTime!) { + student { + getNameLessStudentTimeslotsForReview(from: $from, taskId: $taskId, to: $to) { + checkDuration + projectReviewsInfo { + ...ProjectReviewsInfo + } + timeSlots { + ...CalendarNameLessTimeslot + } + } + } +} \ No newline at end of file diff --git a/schema/operations/calendarGetStudentCodeReviews.gql b/schema/operations/calendarGetStudentCodeReviews.gql new file mode 100644 index 0000000..820ca13 --- /dev/null +++ b/schema/operations/calendarGetStudentCodeReviews.gql @@ -0,0 +1,7 @@ +query calendarGetStudentCodeReviews($studentGoalId: ID!) { + student { + getStudentCodeReviews(studentGoalId: $studentGoalId) { + secondRoundStartDate + } + } +} \ No newline at end of file diff --git a/schema/operations/calendarGetStudentExperience.gql b/schema/operations/calendarGetStudentExperience.gql new file mode 100644 index 0000000..9a21b91 --- /dev/null +++ b/schema/operations/calendarGetStudentExperience.gql @@ -0,0 +1,8 @@ +query calendarGetStudentExperience { + student { + getExperience { + id + cookiesCount + } + } +} \ No newline at end of file diff --git a/schema/operations/cancelInvitation.gql b/schema/operations/cancelInvitation.gql new file mode 100644 index 0000000..5d8bda7 --- /dev/null +++ b/schema/operations/cancelInvitation.gql @@ -0,0 +1,41 @@ +fragment CurrentUserExperience on UserExperience { + id + cookiesCount + codeReviewPoints + coinsCount + level { + id + range { + id + levelCode + } + } +} + +fragment AvailableStudentForTeam on Student { + id + user { + id + login + avatarUrl + userExperience { + ...CurrentUserExperience + } + } +} + +fragment StudentInvitationInfo on StudentInvitationInfo { + student { + ...AvailableStudentForTeam + } + invitationStatus + schoolShortName +} + +mutation cancelInvitation($teamId: UUID!, $userId: ID!) { + student { + cancelInvitation(teamId: $teamId, userId: $userId) { + ...StudentInvitationInfo + } + } +} \ No newline at end of file diff --git a/schema/operations/cancelParticipantEvent.gql b/schema/operations/cancelParticipantEvent.gql new file mode 100644 index 0000000..1748e0b --- /dev/null +++ b/schema/operations/cancelParticipantEvent.gql @@ -0,0 +1,9 @@ +mutation cancelParticipantEvent($activityEvent: ID!) { + event { + cancelParticipantEvent(activityEvent: $activityEvent) { + activityEventId + eventId + name + } + } +} \ No newline at end of file diff --git a/schema/operations/capitulationFromTheCourse.gql b/schema/operations/capitulationFromTheCourse.gql new file mode 100644 index 0000000..4bf316b --- /dev/null +++ b/schema/operations/capitulationFromTheCourse.gql @@ -0,0 +1,7 @@ +mutation capitulationFromTheCourse($localCourseId: ID!) { + student { + capitulationFromTheCourse(localCourseId: $localCourseId) { + finalPoint + } + } +} \ No newline at end of file diff --git a/schema/operations/changeProjectTeamName.gql b/schema/operations/changeProjectTeamName.gql new file mode 100644 index 0000000..bd8dd19 --- /dev/null +++ b/schema/operations/changeProjectTeamName.gql @@ -0,0 +1,5 @@ +mutation changeProjectTeamName($teamId: UUID!, $newName: String!) { + student { + changeGroupName(teamId: $teamId, newName: $newName) + } +} \ No newline at end of file diff --git a/schema/operations/checkCodeReviewPoints.gql b/schema/operations/checkCodeReviewPoints.gql new file mode 100644 index 0000000..bde4883 --- /dev/null +++ b/schema/operations/checkCodeReviewPoints.gql @@ -0,0 +1,5 @@ +mutation checkCodeReviewPoints($goalId: ID!) { + student { + tryDecreaseCodeReviewPoints(goalId: $goalId) + } +} \ No newline at end of file diff --git a/schema/operations/competitionCoalitionGetMyCoalitionMembers.gql b/schema/operations/competitionCoalitionGetMyCoalitionMembers.gql new file mode 100644 index 0000000..00ad116 --- /dev/null +++ b/schema/operations/competitionCoalitionGetMyCoalitionMembers.gql @@ -0,0 +1,19 @@ +query competitionCoalitionGetMyCoalitionMembers($page: PagingInput) { + student { + getUserTournamentWidget { + getMyCoalitionMembers(page: $page) { + user { + id + login + avatarUrl + userExperience { + level { + id + levelCode + } + } + } + } + } + } +} \ No newline at end of file diff --git a/schema/operations/competitionCoalitionGetUserTournament.gql b/schema/operations/competitionCoalitionGetUserTournament.gql new file mode 100644 index 0000000..1914ab1 --- /dev/null +++ b/schema/operations/competitionCoalitionGetUserTournament.gql @@ -0,0 +1,36 @@ +fragment CompetitionCurrentCoalition on GameCoalition { + id + name + avatarUrl + backgroundUrl + backgroundUrlBig + memberCount + color + masterAvatarImgUrl + currentTournament { + points + tournament { + name + timeStart + timeEnd + } + } + masterUser { + login + } +} + +query competitionCoalitionGetUserTournament { + student { + getUserTournamentWidget { + coalitionMember { + coalition { + ...CompetitionCurrentCoalition + } + } + lastTournamentResult { + id + } + } + } +} \ No newline at end of file diff --git a/schema/operations/competitionGetCurrentOrLastTournament.gql b/schema/operations/competitionGetCurrentOrLastTournament.gql new file mode 100644 index 0000000..5297baf --- /dev/null +++ b/schema/operations/competitionGetCurrentOrLastTournament.gql @@ -0,0 +1,50 @@ +fragment CurrentCoalitionTournament on CoalitionTournamentRank { + id + rank + coalitionTournament { + points + extraPoints + coalition { + id + name + avatarUrl + backgroundUrl + backgroundUrlBig + memberCount + color + masterAvatarImgUrl + masterUser { + id + login + } + } + mvpMember { + id + points + coalitionMemberUser { + id + login + avatarUrl + } + } + } +} + +fragment CurrentTournament on GameTournament { + id + name + timeStart + timeEnd + tournamentAwardDescription + coalitionPoints { + ...CurrentCoalitionTournament + } +} + +query competitionGetCurrentOrLastTournament { + student { + getCurrentOrLastTournament { + ...CurrentTournament + } + } +} \ No newline at end of file diff --git a/schema/operations/competitionGetStudentRankInTournament.gql b/schema/operations/competitionGetStudentRankInTournament.gql new file mode 100644 index 0000000..0b1aacb --- /dev/null +++ b/schema/operations/competitionGetStudentRankInTournament.gql @@ -0,0 +1,33 @@ +fragment CompetitioncoalitionUserInfo on User { + id + login + avatarUrl + userExperience { + level { + id + levelCode + } + } +} + +query competitionGetStudentRankInTournament($gameTournamentId: Int!) { + student { + getStudentRankInTournament(gameTournamentId: $gameTournamentId) { + id + rank + power { + id + points + coalitionTournament { + id + coalition { + id + } + } + coalitionMemberUser { + ...CompetitioncoalitionUserInfo + } + } + } + } +} \ No newline at end of file diff --git a/schema/operations/completeFirstCodeReviewRound.gql b/schema/operations/completeFirstCodeReviewRound.gql new file mode 100644 index 0000000..4fceba1 --- /dev/null +++ b/schema/operations/completeFirstCodeReviewRound.gql @@ -0,0 +1,7 @@ +mutation completeFirstCodeReviewRound($studentGoalId: ID!) { + student { + completeFirstCodeReviewRound(studentGoalId: $studentGoalId) { + codeReviewRoundId + } + } +} \ No newline at end of file diff --git a/schema/operations/createCalendarEventFeedback.gql b/schema/operations/createCalendarEventFeedback.gql new file mode 100644 index 0000000..d79216c --- /dev/null +++ b/schema/operations/createCalendarEventFeedback.gql @@ -0,0 +1,12 @@ +mutation createCalendarEventFeedback($studentFeedback: StudentEventFeedbackInput!) { + student { + createCalendarEventFeedback(studentFeedback: $studentFeedback) { + id + user { + id + } + rating + comment + } + } +} \ No newline at end of file diff --git a/schema/operations/createEventFeedback.gql b/schema/operations/createEventFeedback.gql new file mode 100644 index 0000000..00e05c1 --- /dev/null +++ b/schema/operations/createEventFeedback.gql @@ -0,0 +1,14 @@ +mutation createEventFeedback($calendarEventId: ID!, $rating: Int!, $comment: String) { + student { + createCalendarEventFeedback( + studentFeedback: {calendarEventId: $calendarEventId, rating: $rating, comment: $comment} + ) { + user { + login + } + createDate + rating + comment + } + } +} \ No newline at end of file diff --git a/schema/operations/createFeedbackOnEvaluation.gql b/schema/operations/createFeedbackOnEvaluation.gql new file mode 100644 index 0000000..7af4454 --- /dev/null +++ b/schema/operations/createFeedbackOnEvaluation.gql @@ -0,0 +1,20 @@ +fragment EvaluationFeedback on ReviewFeedback { + id + comment + filledChecklist { + id + } + reviewFeedbackCategoryValues { + feedbackCategory + feedbackValue + id + } +} + +mutation createFeedbackOnEvaluation($reviewFeedbackInput: ReviewFeedbackInput!) { + student { + createReviewFeedback(reviewFeedbackInput: $reviewFeedbackInput) { + ...EvaluationFeedback + } + } +} \ No newline at end of file diff --git a/schema/operations/createParticipantEvent.gql b/schema/operations/createParticipantEvent.gql new file mode 100644 index 0000000..8c675dd --- /dev/null +++ b/schema/operations/createParticipantEvent.gql @@ -0,0 +1,10 @@ +mutation createParticipantEvent($input: ActivityEventByStudentInputModel!) { + event { + createParticipantEvent(input: $input) { + activityEventId + eventId + name + eventType + } + } +} \ No newline at end of file diff --git a/schema/operations/dashboardHeaderGetInfo.gql b/schema/operations/dashboardHeaderGetInfo.gql new file mode 100644 index 0000000..d628269 --- /dev/null +++ b/schema/operations/dashboardHeaderGetInfo.gql @@ -0,0 +1,55 @@ +query dashboardHeaderGetInfo { + user { + getCurrentUser { + id + login + avatarUrl + firstName + middleName + lastName + currentSchoolStudentId + studentRoles { + id + status + school { + id + shortName + } + } + } + } + student { + getUserTournamentWidget { + coalitionMember { + coalition { + avatarUrl + color + name + memberCount + } + currentTournamentPowerRank { + rank + } + } + lastTournamentResult { + userRank + } + } + getExperience { + id + value + level { + id + range { + id + levelCode + rightBorder + leftBorder + } + } + cookiesCount + coinsCount + codeReviewPoints + } + } +} \ No newline at end of file diff --git a/schema/operations/deadlineReminderGetClosestDeadlinePopup.gql b/schema/operations/deadlineReminderGetClosestDeadlinePopup.gql new file mode 100644 index 0000000..4c2c98e --- /dev/null +++ b/schema/operations/deadlineReminderGetClosestDeadlinePopup.gql @@ -0,0 +1,74 @@ +fragment Level on ExperienceLevelRange { + id + level + levelCode + leftBorder + rightBorder +} + +fragment GoalCourse on CourseCoverInformation { + localCourseId + courseName + courseType + experienceFact + finalPercentage + displayedCourseStatus +} + +fragment DeadlineGoalData on DeadlineGoal { + goalProjects { + studentGoalId + project { + goalName + goalId + } + status + executionType + finalPercentage + finalPoint + pointTask + } + goalCourses { + ...GoalCourse + } + levels { + ...Level + } +} + +fragment DeadlineData on Deadline { + deadlineId + description + comment + deadlineToDaysArray + deadlineTs + createTs + updateTs + status + rules { + logicalOperatorId + rulesInGroup { + logicalOperatorId + value { + fieldId + subFieldKey + operator + value + } + } + } +} + +query deadlineReminderGetClosestDeadlinePopup { + student { + getClosestDeadlinePopup { + deadline { + ...DeadlineData + } + deadlineGoal { + ...DeadlineGoalData + } + shiftCount + } + } +} \ No newline at end of file diff --git a/schema/operations/deadlinesGetDeadlines.gql b/schema/operations/deadlinesGetDeadlines.gql new file mode 100644 index 0000000..8317981 --- /dev/null +++ b/schema/operations/deadlinesGetDeadlines.gql @@ -0,0 +1,86 @@ +fragment Level on ExperienceLevelRange { + id + level + levelCode + leftBorder + rightBorder +} + +fragment GoalCourse on CourseCoverInformation { + localCourseId + courseName + courseType + experienceFact + finalPercentage + displayedCourseStatus +} + +fragment DeadlineGoalData on DeadlineGoal { + goalProjects { + studentGoalId + project { + goalName + goalId + } + status + executionType + finalPercentage + finalPoint + pointTask + } + goalCourses { + ...GoalCourse + } + levels { + ...Level + } +} + +fragment DeadlineData on Deadline { + deadlineId + description + comment + deadlineToDaysArray + deadlineTs + createTs + updateTs + status + rules { + logicalOperatorId + rulesInGroup { + logicalOperatorId + value { + fieldId + subFieldKey + operator + value + } + } + } +} + +query deadlinesGetDeadlines($deadlineStatuses: [DeadlineStatus!]!, $page: PagingInput!, $deadlinesFrom: DateTime, $deadlinesTo: DateTime, $sorting: [SortingField]) { + student { + getDeadlines( + deadlineStatuses: $deadlineStatuses + page: $page + deadlineFrom: $deadlinesFrom + deadlineTo: $deadlinesTo + sorting: $sorting + ) { + deadline { + ...DeadlineData + } + shiftRequests { + deadlineShiftRequestId + status + daysToShift + createTs + } + deadlineGoal { + ...DeadlineGoalData + } + shiftCount + } + } +} \ No newline at end of file diff --git a/schema/operations/deadlinesGetStudentData.gql b/schema/operations/deadlinesGetStudentData.gql new file mode 100644 index 0000000..659b05c --- /dev/null +++ b/schema/operations/deadlinesGetStudentData.gql @@ -0,0 +1,31 @@ +query deadlinesGetStudentData { + student { + getStudentProfile { + user { + id + login + firstName + middleName + lastName + } + } + getExperience { + id + value + level { + id + range { + id + levelCode + rightBorder + leftBorder + } + } + } + getExperienceHistory { + id + awardDate + experienceReceived + } + } +} \ No newline at end of file diff --git a/schema/operations/disbandAndFail.gql b/schema/operations/disbandAndFail.gql new file mode 100644 index 0000000..1695909 --- /dev/null +++ b/schema/operations/disbandAndFail.gql @@ -0,0 +1,5 @@ +mutation disbandAndFail($taskId: ID!) { + sc21ProjectFlow { + surrenderFromProject(taskId: $taskId) + } +} \ No newline at end of file diff --git a/schema/operations/evaluateCodeReviewProjectAndReviewers.gql b/schema/operations/evaluateCodeReviewProjectAndReviewers.gql new file mode 100644 index 0000000..36eb032 --- /dev/null +++ b/schema/operations/evaluateCodeReviewProjectAndReviewers.gql @@ -0,0 +1,11 @@ +mutation evaluateCodeReviewProjectAndReviewers($studentGoalId: ID!, $finalMark: Boolean!, $studentMarks: [CodeReviewersMarksInput!]!) { + student { + evaluateCodeReviewProjectAndReviewers( + studentGoalId: $studentGoalId + finalMark: $finalMark + studentMarks: $studentMarks + ) { + studentCodeReviewId + } + } +} \ No newline at end of file diff --git a/schema/operations/eventsWithoutFeedback.gql b/schema/operations/eventsWithoutFeedback.gql new file mode 100644 index 0000000..ef184bc --- /dev/null +++ b/schema/operations/eventsWithoutFeedback.gql @@ -0,0 +1,12 @@ +query eventsWithoutFeedback($from: DateTime!, $to: DateTime!) { + student { + getCalendarEventsWithoutFeedback(from: $from, to: $to) { + id + activity { + eventId + name + endDate + } + } + } +} \ No newline at end of file diff --git a/schema/operations/finishCourse.gql b/schema/operations/finishCourse.gql new file mode 100644 index 0000000..a1f1fd2 --- /dev/null +++ b/schema/operations/finishCourse.gql @@ -0,0 +1,5 @@ +mutation finishCourse($localCourseId: ID!) { + course { + finishCourse(localCourseId: $localCourseId) + } +} \ No newline at end of file diff --git a/schema/operations/finishProject.gql b/schema/operations/finishProject.gql new file mode 100644 index 0000000..1f8193c --- /dev/null +++ b/schema/operations/finishProject.gql @@ -0,0 +1,5 @@ +mutation finishProject($taskId: ID!) { + sc21ProjectFlow { + finishProject(taskId: $taskId) + } +} \ No newline at end of file diff --git a/schema/operations/getActivityTypes.gql b/schema/operations/getActivityTypes.gql new file mode 100644 index 0000000..a104eec --- /dev/null +++ b/schema/operations/getActivityTypes.gql @@ -0,0 +1,9 @@ +query getActivityTypes { + school21 { + getActivityTypes { + id + description + category + } + } +} \ No newline at end of file diff --git a/schema/operations/getAgendaActivityOrExam.gql b/schema/operations/getAgendaActivityOrExam.gql new file mode 100644 index 0000000..1096c47 --- /dev/null +++ b/schema/operations/getAgendaActivityOrExam.gql @@ -0,0 +1,42 @@ +query getAgendaActivityOrExam($eventId: ID!) { + student { + getEnrichedCalendar(eventId: $eventId) { + start + end + description + exam { + currentStudentsCount + maxStudentCount + isRegistered + isInWaitList + isWaitListActive + stopRegisterDate + endDate + registrationAccessStatus + goalId + name + location + } + activity { + eventId + activityEventId + currentStudentsCount + maxStudentCount + isRegistered + isInWaitList + isWaitListActive + stopRegisterDate + endDate + activityType + location + isMandatory + description + status + organizers { + id + login + } + } + } + } +} \ No newline at end of file diff --git a/schema/operations/getAgendaEvents.gql b/schema/operations/getAgendaEvents.gql new file mode 100644 index 0000000..35f49bb --- /dev/null +++ b/schema/operations/getAgendaEvents.gql @@ -0,0 +1,19 @@ +query getAgendaEvents($from: DateTime!, $to: DateTime!, $limit: Int!) { + calendarEventS21 { + getMyAgendaEvents(from: $from, to: $to, limit: $limit) { + agendaItemContext { + entityId + entityType + } + start + end + label + description + agendaEventType + additionalInfo { + key + value + } + } + } +} \ No newline at end of file diff --git a/schema/operations/getAgendaP2P.gql b/schema/operations/getAgendaP2P.gql new file mode 100644 index 0000000..f352487 --- /dev/null +++ b/schema/operations/getAgendaP2P.gql @@ -0,0 +1,55 @@ +query getAgendaP2P($bookingId: ID!) { + student { + getEnrichedBooking(bookingId: $bookingId) { + id + eventSlot { + start + school { + shortName + } + } + task { + goalId + goalName + assignmentType + studentTaskAdditionalAttributes { + cookiesCount + } + } + verifierUser { + id + login + avatarUrl + userExperience { + level { + range { + levelCode + } + } + } + } + verifiableInfo { + verifiableStudents { + userId + login + avatarUrl + levelCode + isTeamLead + school { + shortName + } + } + team { + name + } + } + answerId + bookingStatus + additionalChecklist { + filledChecklistId + } + isOnline + vcLinkUrl + } + } +} \ No newline at end of file diff --git a/schema/operations/getAllInCompletedStudentFeedbackPopup.gql b/schema/operations/getAllInCompletedStudentFeedbackPopup.gql new file mode 100644 index 0000000..74f75c2 --- /dev/null +++ b/schema/operations/getAllInCompletedStudentFeedbackPopup.gql @@ -0,0 +1,9 @@ +query getAllInCompletedStudentFeedbackPopup { + sc21StudentTaskCheck { + getAllInCompletedStudentFeedbackPopup { + studentFeedbackId + goalName + resultAttemptDate + } + } +} \ No newline at end of file diff --git a/schema/operations/getAsapWidgets.gql b/schema/operations/getAsapWidgets.gql new file mode 100644 index 0000000..083b576 --- /dev/null +++ b/schema/operations/getAsapWidgets.gql @@ -0,0 +1,23 @@ +fragment AsapWidget on AsapWidgetInfo { + shortImg + shortTitle + shortUrl + startDate + finishDate + showFinishDate + fullTitle + text + fullImgUrl + adtTypeId + adtWidgetId +} + +query getAsapWidgets { + student { + getAsapWidgetList { + widgetList { + ...AsapWidget + } + } + } +} \ No newline at end of file diff --git a/schema/operations/getAvailableCodeReviewProjects.gql b/schema/operations/getAvailableCodeReviewProjects.gql new file mode 100644 index 0000000..2a26432 --- /dev/null +++ b/schema/operations/getAvailableCodeReviewProjects.gql @@ -0,0 +1,25 @@ +fragment CodeReviewProject on CodeReview { + goalId + goalTitle + studentGoalId + studentCodeReviewStatus + goalExecutionType + studentTaskAdditionalAttributesModel { + codeReviewCost + codeReviewDuration + } +} + +query getAvailableCodeReviewProjects($paging: PagingInput!) { + student { + getAvailableCodeReviewProjectsV2(paging: $paging) { + codeReviews { + ...CodeReviewProject + } + limitInfo { + limitByWeek + usedByWeek + } + } + } +} \ No newline at end of file diff --git a/schema/operations/getAvailableStudentsForTeams.gql b/schema/operations/getAvailableStudentsForTeams.gql new file mode 100644 index 0000000..5779a92 --- /dev/null +++ b/schema/operations/getAvailableStudentsForTeams.gql @@ -0,0 +1,41 @@ +fragment CurrentUserExperience on UserExperience { + id + cookiesCount + codeReviewPoints + coinsCount + level { + id + range { + id + levelCode + } + } +} + +fragment AvailableStudentForTeam on Student { + id + user { + id + login + avatarUrl + userExperience { + ...CurrentUserExperience + } + } +} + +fragment StudentInvitationInfo on StudentInvitationInfo { + student { + ...AvailableStudentForTeam + } + invitationStatus + schoolShortName +} + +query getAvailableStudentsForTeams($goalId: ID!) { + student { + getAvailableStudentsForTeam(goalId: $goalId) { + ...StudentInvitationInfo + } + } +} \ No newline at end of file diff --git a/schema/operations/getCampusBuildings.gql b/schema/operations/getCampusBuildings.gql new file mode 100644 index 0000000..5006b54 --- /dev/null +++ b/schema/operations/getCampusBuildings.gql @@ -0,0 +1,20 @@ +query getCampusBuildings { + student { + getBuildings { + id + name + classrooms { + id + number + capacity + availableCapacity + floor + classroomPlan { + classroomPlanId + planMeta + } + specializations + } + } + } +} \ No newline at end of file diff --git a/schema/operations/getCampusCurrentUser.gql b/schema/operations/getCampusCurrentUser.gql new file mode 100644 index 0000000..42ef090 --- /dev/null +++ b/schema/operations/getCampusCurrentUser.gql @@ -0,0 +1,8 @@ +query getCampusCurrentUser { + user { + getCurrentUser { + id + login + } + } +} \ No newline at end of file diff --git a/schema/operations/getCampusPlanOccupied.gql b/schema/operations/getCampusPlanOccupied.gql new file mode 100644 index 0000000..fca6da3 --- /dev/null +++ b/schema/operations/getCampusPlanOccupied.gql @@ -0,0 +1,31 @@ +query getCampusPlanOccupied($clusterId: ID!) { + student { + getClusterPlanStudentsByClusterId(clusterId: $clusterId) { + occupiedPlaces { + row + number + stageGroupName + stageName + user { + id + login + avatarUrl + } + experience { + id + value + level { + id + range { + id + levelCode + leftBorder + rightBorder + } + } + } + studentType + } + } + } +} \ No newline at end of file diff --git a/schema/operations/getCampusUserAvatar.gql b/schema/operations/getCampusUserAvatar.gql new file mode 100644 index 0000000..7190cc1 --- /dev/null +++ b/schema/operations/getCampusUserAvatar.gql @@ -0,0 +1,5 @@ +query getCampusUserAvatar($userId: UUID!) { + school21 { + getAvatarByUserId(userId: $userId) + } +} \ No newline at end of file diff --git a/schema/operations/getCampusUserIdByLogin.gql b/schema/operations/getCampusUserIdByLogin.gql new file mode 100644 index 0000000..7548fd8 --- /dev/null +++ b/schema/operations/getCampusUserIdByLogin.gql @@ -0,0 +1,5 @@ +query getCampusUserIdByLogin($login: String!) { + school21 { + getUserIdByLogin(login: $login) + } +} \ No newline at end of file diff --git a/schema/operations/getCampusWorkstation.gql b/schema/operations/getCampusWorkstation.gql new file mode 100644 index 0000000..0f360c0 --- /dev/null +++ b/schema/operations/getCampusWorkstation.gql @@ -0,0 +1,11 @@ +query getCampusWorkstation($login: String!) { + student { + getWorkstationByLogin(login: $login) { + id + classroomId + hostName + workstationRow + workstationNumber + } + } +} \ No newline at end of file diff --git a/schema/operations/getChildrenTagsList.gql b/schema/operations/getChildrenTagsList.gql new file mode 100644 index 0000000..582e0b5 --- /dev/null +++ b/schema/operations/getChildrenTagsList.gql @@ -0,0 +1,10 @@ +query getChildrenTagsList($filter: MediatekaTagsWithLinksFilter!) { + mediateka { + getTagsRelativesWithFiltering(filter: $filter) { + children { + id + name + } + } + } +} \ No newline at end of file diff --git a/schema/operations/getClassmates.gql b/schema/operations/getClassmates.gql new file mode 100644 index 0000000..b233476 --- /dev/null +++ b/schema/operations/getClassmates.gql @@ -0,0 +1,12 @@ +query getClassmates($textSearch: String) { + honorRating { + getClassmates(textSearch: $textSearch) { + __typename + id + firstName + lastName + login + } + __typename + } +} \ No newline at end of file diff --git a/schema/operations/getCodeReviewMyStudent.gql b/schema/operations/getCodeReviewMyStudent.gql new file mode 100644 index 0000000..634bcf8 --- /dev/null +++ b/schema/operations/getCodeReviewMyStudent.gql @@ -0,0 +1,20 @@ +fragment CodeReviewRound on CodeReviewRound { + eventId + codeReviewRoundType + codeReviewStatus + startTime + endTime + mergeRequestURL + createTime +} + +query getCodeReviewMyStudent($studentGoalId: ID!) { + student { + getMyStudentCodeReview(studentGoalId: $studentGoalId) { + reviewerCommentsCount + codeReviewRounds { + ...CodeReviewRound + } + } + } +} \ No newline at end of file diff --git a/schema/operations/getCodeReviewPointChargedOff.gql b/schema/operations/getCodeReviewPointChargedOff.gql new file mode 100644 index 0000000..b12fc89 --- /dev/null +++ b/schema/operations/getCodeReviewPointChargedOff.gql @@ -0,0 +1,5 @@ +query getCodeReviewPointChargedOff($goalId: ID!) { + student { + getCodeReviewPointChargedOff(goalId: $goalId) + } +} \ No newline at end of file diff --git a/schema/operations/getCodeReviewProjectInfo.gql b/schema/operations/getCodeReviewProjectInfo.gql new file mode 100644 index 0000000..ad4f44e --- /dev/null +++ b/schema/operations/getCodeReviewProjectInfo.gql @@ -0,0 +1,36 @@ +fragment CodeReviewCurrentTaskInfo on StudentTask { + id + taskId + task { + content { + body + } + assignmentType + studentTaskAdditionalAttributes { + codeReviewDuration + codeReviewCost + } + } +} + +fragment CodeReviewProjectInfo on StudentModule { + id + moduleTitle + studyModule { + duration + stage { + name + } + } + currentTask { + ...CodeReviewCurrentTaskInfo + } +} + +query getCodeReviewProjectInfo($studentGoalId: ID!) { + student { + getStudentModuleByStudentGoalId(studentGoalId: $studentGoalId) { + ...CodeReviewProjectInfo + } + } +} \ No newline at end of file diff --git a/schema/operations/getCoinsHistory.gql b/schema/operations/getCoinsHistory.gql new file mode 100644 index 0000000..79ee4b4 --- /dev/null +++ b/schema/operations/getCoinsHistory.gql @@ -0,0 +1,20 @@ +fragment CoinsTransactionInfo on UserCoinsHistoryItemModel { + id + itemType + amount + date + badgeName + badgeAvatar + externalTransactionId + giverLogin + comment + amountAfter +} + +query getCoinsHistory { + student { + getUserCoinsHistory { + ...CoinsTransactionInfo + } + } +} \ No newline at end of file diff --git a/schema/operations/getCollectionList.gql b/schema/operations/getCollectionList.gql new file mode 100644 index 0000000..fca6266 --- /dev/null +++ b/schema/operations/getCollectionList.gql @@ -0,0 +1,12 @@ +fragment MediatekaCollectionItemFragment on Selection { + selectionId + name +} + +query getCollectionList($bound: Boolean, $selectionType: SelectionType, $stageIds: [ID!]) { + selection { + getSelections(bound: $bound, selectionType: $selectionType, stageIds: $stageIds) { + ...MediatekaCollectionItemFragment + } + } +} \ No newline at end of file diff --git a/schema/operations/getCourseAttemptStatistic.gql b/schema/operations/getCourseAttemptStatistic.gql new file mode 100644 index 0000000..8e3bf50 --- /dev/null +++ b/schema/operations/getCourseAttemptStatistic.gql @@ -0,0 +1,10 @@ +query getCourseAttemptStatistic($localCourseId: ID!) { + course { + getCourseAttemptStatistic(localCourseId: $localCourseId) { + resultDate + finalPercentage + pointProject + completionResultStatus + } + } +} \ No newline at end of file diff --git a/schema/operations/getCourseConsistencyInfo.gql b/schema/operations/getCourseConsistencyInfo.gql new file mode 100644 index 0000000..6d19380 --- /dev/null +++ b/schema/operations/getCourseConsistencyInfo.gql @@ -0,0 +1,10 @@ +query getCourseConsistencyInfo($localCourseId: ID!) { + school21 { + loadCourseConsistencyInfo(localCourseId: $localCourseId) { + courseId + name + isConsistent + isConstructorsValid + } + } +} \ No newline at end of file diff --git a/schema/operations/getCourseCoverInformation.gql b/schema/operations/getCourseCoverInformation.gql new file mode 100644 index 0000000..436dcea --- /dev/null +++ b/schema/operations/getCourseCoverInformation.gql @@ -0,0 +1,55 @@ +fragment CourseGoalsTypes on LocalCourseGoalInformation { + executionType +} + +fragment CourseInfo on CourseCoverInformation { + courseName + courseType + courseStatus + signUpEndDate + signUpStartDate + workStartDate + workEndDate + duration + courseDescription + finalPercentage + courseStatusesHistory + experience + experienceFact + currentStudentCount + retriesOfCurrentStudents + teamsWaitingEvaluationCount + displayedCourseStatus + finishedCount + retriesCount + resultCourseCompletion + softSkills { + softSkillId + maxPower + currentUserPower + softSkillName + totalPower + teamRole + achievedUserPower + } + isRetryAvailable + isCourseCanBeFinished +} + +query getCourseCoverInformation($localCourseId: ID!) { + course { + getCourseCoverInformation(localCourseId: $localCourseId) { + ...CourseInfo + } + getCourseRetryInfo(localCourseId: $localCourseId) { + totalRetryValue + usedRetryCount + unlimitedAttempts + } + getLocalCourseGoals(localCourseId: $localCourseId) { + localCourseGoals { + ...CourseGoalsTypes + } + } + } +} \ No newline at end of file diff --git a/schema/operations/getCourseEvaluationRules.gql b/schema/operations/getCourseEvaluationRules.gql new file mode 100644 index 0000000..420769e --- /dev/null +++ b/schema/operations/getCourseEvaluationRules.gql @@ -0,0 +1,34 @@ +fragment ExecutionConditionValue on StudentEvaluationRuleValue { + fieldId + fieldName + fieldType + subFieldKey + subFieldName + operator + valueWithDescription { + key + value + } + projectRoutingInfo { + key + value + } +} + +fragment ExecutionConditions on StudentEvaluationRuleGroup { + logicalOperatorId + rulesInGroup { + logicalOperatorId + value { + ...ExecutionConditionValue + } + } +} + +query getCourseEvaluationRules($localCourseId: ID!) { + course { + loadCourseEvaluationRules(localCourseId: $localCourseId) { + ...ExecutionConditions + } + } +} \ No newline at end of file diff --git a/schema/operations/getCredentialsByLogin.gql b/schema/operations/getCredentialsByLogin.gql new file mode 100644 index 0000000..e270236 --- /dev/null +++ b/schema/operations/getCredentialsByLogin.gql @@ -0,0 +1,11 @@ +query getCredentialsByLogin($login: String!) { + school21 { + getStudentByLogin(login: $login) { + studentId + userId + schoolId + isActive + isGraduate + } + } +} \ No newline at end of file diff --git a/schema/operations/getCurrentUser.gql b/schema/operations/getCurrentUser.gql new file mode 100644 index 0000000..9e85c8d --- /dev/null +++ b/schema/operations/getCurrentUser.gql @@ -0,0 +1,17 @@ +fragment CurrentUser on User { + id + avatarUrl + login + firstName + middleName + lastName + currentSchoolStudentId +} + +query getCurrentUser { + user { + getCurrentUser { + ...CurrentUser + } + } +} \ No newline at end of file diff --git a/schema/operations/getCurrentUserExperience.gql b/schema/operations/getCurrentUserExperience.gql new file mode 100644 index 0000000..1939869 --- /dev/null +++ b/schema/operations/getCurrentUserExperience.gql @@ -0,0 +1,21 @@ +fragment CurrentUserExperience on UserExperience { + id + cookiesCount + codeReviewPoints + coinsCount + level { + id + range { + id + levelCode + } + } +} + +query getCurrentUserExperience { + student { + getExperience { + ...CurrentUserExperience + } + } +} \ No newline at end of file diff --git a/schema/operations/getDashboardBuildings.gql b/schema/operations/getDashboardBuildings.gql new file mode 100644 index 0000000..ea7152e --- /dev/null +++ b/schema/operations/getDashboardBuildings.gql @@ -0,0 +1,11 @@ +query getDashboardBuildings { + student { + getBuildings { + id + classrooms { + id + number + } + } + } +} \ No newline at end of file diff --git a/schema/operations/getDashboardWorkstation.gql b/schema/operations/getDashboardWorkstation.gql new file mode 100644 index 0000000..1b746c4 --- /dev/null +++ b/schema/operations/getDashboardWorkstation.gql @@ -0,0 +1,12 @@ +query getDashboardWorkstation($login: String!) { + student { + getWorkstationByLogin(login: $login) { + id + classroomId + hostName + classroom { + floor + } + } + } +} \ No newline at end of file diff --git a/schema/operations/getDismissInfoByStudentId.gql b/schema/operations/getDismissInfoByStudentId.gql new file mode 100644 index 0000000..1cb9ed5 --- /dev/null +++ b/schema/operations/getDismissInfoByStudentId.gql @@ -0,0 +1,14 @@ +query getDismissInfoByStudentId($studentId: UUID!) { + school21 { + getDismissInfoByStudentId(studentId: $studentId) { + dismissTypeId + dismissTs + lastStageGroupS21 { + waveId + waveName + eduForm + active + } + } + } +} \ No newline at end of file diff --git a/schema/operations/getExamInfo.gql b/schema/operations/getExamInfo.gql new file mode 100644 index 0000000..cff3425 --- /dev/null +++ b/schema/operations/getExamInfo.gql @@ -0,0 +1,99 @@ +fragment GroupProjectStatistics on GroupProjectStatistics { + inProgressTeams + evaluationTeams + finishedTeams + acceptedTeams + failedTeams +} + +fragment TimelineItemChildren on ProjectTimelineItem { + type + elementType + status + start + end + order +} + +fragment ProjectStatistics on ProjectStatistics { + registeredStudents + inProgressStudents + evaluationStudents + finishedStudents + acceptedStudents + failedStudents + retriedStudentsPercentage + groupProjectStatistics { + ...GroupProjectStatistics + } +} + +fragment TimelineItem on ProjectTimelineItem { + type + status + start + end + children { + ...TimelineItemChildren + } +} + +fragment StudentGoalRetryInfo on StudentGoalRetryInfo { + totalRetryValue + usedRetryCount + unlimitedAttempts +} + +fragment ModuleExamCoverInfo on ModuleCoverInformation { + timeline { + ...TimelineItem + } + projectStatistics { + ...ProjectStatistics + } + softSkills { + softSkillId + maxPower + currentUserPower + softSkillName + totalPower + teamRole + achievedUserPower + } +} + +fragment ExamInfo on StudentModule { + id + moduleTitle + displayedGoalStatus + resultModuleCompletion + localCourseId + finalPercentage + finalPoint + localCourseId + goalExecutionType + isRetryAvailable + durationFromStageSubjectGroupPlan + courseBaseParameters { + isGradedCourse + } + studyModule { + idea + duration + goalPoint + } +} + +query getExamInfo($goalId: ID!) { + student { + getModuleById(goalId: $goalId) { + ...ExamInfo + } + getModuleCoverInformation(goalId: $goalId) { + ...ModuleExamCoverInfo + } + getGoalRetryInfo(goalId: $goalId) { + ...StudentGoalRetryInfo + } + } +} \ No newline at end of file diff --git a/schema/operations/getExecutionConditions.gql b/schema/operations/getExecutionConditions.gql new file mode 100644 index 0000000..866cb72 --- /dev/null +++ b/schema/operations/getExecutionConditions.gql @@ -0,0 +1,34 @@ +fragment ExecutionConditionValue on StudentEvaluationRuleValue { + fieldId + fieldName + fieldType + subFieldKey + subFieldName + operator + valueWithDescription { + key + value + } + projectRoutingInfo { + key + value + } +} + +fragment ExecutionConditions on StudentEvaluationRuleGroup { + logicalOperatorId + rulesInGroup { + logicalOperatorId + value { + ...ExecutionConditionValue + } + } +} + +query getExecutionConditions($goalId: ID!) { + student { + loadTaskEvaluationRules(goalId: $goalId) { + ...ExecutionConditions + } + } +} \ No newline at end of file diff --git a/schema/operations/getFilledChecklist.gql b/schema/operations/getFilledChecklist.gql new file mode 100644 index 0000000..8cfc217 --- /dev/null +++ b/schema/operations/getFilledChecklist.gql @@ -0,0 +1,135 @@ +fragment FormChecklistQuestion on SectionQuestion { + sectionQuestionId + name + description + taskAssessmentScale { + criterionScaleId + type + description + scaleWeights { + key + value + } + } +} + +fragment FormChecklistSection on ChecklistSection { + checklistSectionId + name + description + kindQuestionId + questionList { + ...FormChecklistQuestion + } +} + +fragment OnlineReviewInfo on OnlineReview { + isOnline + video { + onlineVideoId + link + status + statusDetails + updateDateTime + } +} + +fragment TeamMemberUser on User { + id + avatarUrl + login + userExperience { + level { + id + levelCode + range { + levelCode + } + } + cookiesCount + codeReviewPoints + } + activeSchoolShortName +} + +fragment TeamMember on TeamMember { + user { + ...TeamMemberUser + } + role +} + +fragment FilledChecklistModuleInfo on ModuleInfoP2P { + moduleName + executionType + periodOfVerification +} + +fragment FormChecklist on Checklist { + language + introduction + guidelines + sectionList { + ...FormChecklistSection + } + quickActions +} + +fragment ChecklistSolutionInfo on SolutionInfo { + solutionType + gitlabSolutionInfo { + gitlabLink { + id + sshLink + httpsLink + } + } + platfSolutionInfo { + comment + files { + studyProcessFileId + link + creatorLogin + fileExtension + fileSize + } + } +} + +query getFilledChecklist($filledChecklistId: ID!) { + student { + getP2pInfo(filledChecklistId: $filledChecklistId) { + id + solutionInfo { + ...ChecklistSolutionInfo + } + checklist { + ...FormChecklist + } + moduleInfoP2P { + ...FilledChecklistModuleInfo + } + progressCheckInfo { + reviewUserCount + reviewUserCountExecuted + } + verifiableUsers { + teamWithMembers { + team { + id + name + } + members { + ...TeamMember + } + } + user { + ...TeamMemberUser + } + } + onlineReview { + ...OnlineReviewInfo + } + } + } +} \ No newline at end of file diff --git a/schema/operations/getFirstRoundCodeReviewProjects.gql b/schema/operations/getFirstRoundCodeReviewProjects.gql new file mode 100644 index 0000000..8d82cd3 --- /dev/null +++ b/schema/operations/getFirstRoundCodeReviewProjects.gql @@ -0,0 +1,19 @@ +fragment CodeReviewProject on CodeReview { + goalId + goalTitle + studentGoalId + studentCodeReviewStatus + goalExecutionType + studentTaskAdditionalAttributesModel { + codeReviewCost + codeReviewDuration + } +} + +query getFirstRoundCodeReviewProjects($paging: PagingInput!) { + student { + getFirstRoundCodeReviewProjects(paging: $paging) { + ...CodeReviewProject + } + } +} \ No newline at end of file diff --git a/schema/operations/getGitlabSettingsToken.gql b/schema/operations/getGitlabSettingsToken.gql new file mode 100644 index 0000000..9156d2b --- /dev/null +++ b/schema/operations/getGitlabSettingsToken.gql @@ -0,0 +1,7 @@ +query getGitlabSettingsToken($taskId: ID!) { + student { + getLinkToPrivateStudentGitlabProjectByTaskId(taskId: $taskId) { + runnersToken + } + } +} \ No newline at end of file diff --git a/schema/operations/getGlobalSearchResults.gql b/schema/operations/getGlobalSearchResults.gql new file mode 100644 index 0000000..1b046ab --- /dev/null +++ b/schema/operations/getGlobalSearchResults.gql @@ -0,0 +1,59 @@ +fragment GlobalSearchCoursesSearchResult on CoursesSearchResult { + count + courses { + goalId + name + displayedCourseStatus + executionType + finalPercentage + experience + courseType + localCourseId + goalStatus + } +} + +fragment GlobalSearchProjectsSearchResult on ProjectsSearchResult { + count + projects { + studentTaskId + status + finalPercentage + finalPoint + project { + goalId + goalName + } + executionType + } +} + +fragment GlobalSearchProfilesSearchResult on ProfilesSearchResult { + count + profiles { + login + firstName + lastName + level + avatarUrl + school { + shortName + } + } +} + +query getGlobalSearchResults($searchString: String!, $items: [SearchItem]!, $page: PagingInput!) { + globalSearch { + searchByText(searchString: $searchString, items: $items, page: $page) { + profiles { + ...GlobalSearchProfilesSearchResult + } + projects { + ...GlobalSearchProjectsSearchResult + } + studentCourses { + ...GlobalSearchCoursesSearchResult + } + } + } +} \ No newline at end of file diff --git a/schema/operations/getGoalAttemptStatistic.gql b/schema/operations/getGoalAttemptStatistic.gql new file mode 100644 index 0000000..91c84a5 --- /dev/null +++ b/schema/operations/getGoalAttemptStatistic.gql @@ -0,0 +1,14 @@ +fragment AttemptStatisticResult on StudentGoalAttemptStatistic { + finalPercentage + pointProject + resultModuleCompletion + resultDate +} + +query getGoalAttemptStatistic($goalId: ID!) { + student { + getGoalAttemptStatistic(goalId: $goalId) { + ...AttemptStatisticResult + } + } +} \ No newline at end of file diff --git a/schema/operations/getGraphGetCurrentUser.gql b/schema/operations/getGraphGetCurrentUser.gql new file mode 100644 index 0000000..61a871f --- /dev/null +++ b/schema/operations/getGraphGetCurrentUser.gql @@ -0,0 +1,9 @@ +query getGraphGetCurrentUser { + user { + getCurrentUser { + id + currentSchoolStudentId + login + } + } +} \ No newline at end of file diff --git a/schema/operations/getGraphGetStudentAvatar.gql b/schema/operations/getGraphGetStudentAvatar.gql new file mode 100644 index 0000000..1816b8b --- /dev/null +++ b/schema/operations/getGraphGetStudentAvatar.gql @@ -0,0 +1,5 @@ +query getGraphGetStudentAvatar($userId: UUID!) { + school21 { + getAvatarByUserId(userId: $userId) + } +} \ No newline at end of file diff --git a/schema/operations/getGraphStudentIdByLogin.gql b/schema/operations/getGraphStudentIdByLogin.gql new file mode 100644 index 0000000..fa55bf1 --- /dev/null +++ b/schema/operations/getGraphStudentIdByLogin.gql @@ -0,0 +1,6 @@ +query getGraphStudentIdByLogin($login: String!) { + school21 { + getStudentIdByLogin(login: $login) + getUserIdByLogin(login: $login) + } +} \ No newline at end of file diff --git a/schema/operations/getInternshipAttemptEvaluationsInfo.gql b/schema/operations/getInternshipAttemptEvaluationsInfo.gql new file mode 100644 index 0000000..04fbef9 --- /dev/null +++ b/schema/operations/getInternshipAttemptEvaluationsInfo.gql @@ -0,0 +1,69 @@ +fragment InternshipEvaluationFeedback on ReviewFeedback { + id + comment + filledChecklist { + id + } + reviewFeedbackCategoryValues { + feedbackCategory + feedbackValue + id + } +} + +fragment InternshipChecklist on FilledChecklist { + id + checklistId + endTimeCheck + startTimeCheck + reviewer { + avatarUrl + login + businessAdminRoles { + id + school { + id + organizationType + } + } + } + reviewFeedback { + ...InternshipEvaluationFeedback + } + comment + receivedPoint + receivedPercentage + quickAction +} + +fragment InternshipP2PEvaluation on P2PEvaluationInfo { + status + checklist { + ...InternshipChecklist + } +} + +fragment InternshipAtemptResult on StudentGoalAttempt { + finalPointProject + finalPercentageProject + resultModuleCompletion + resultDate +} + +fragment InternshipAttemptEvaluations on ProjectAttemptEvaluationsInfo { + studentAnswerId + attemptResult { + ...InternshipAtemptResult + } + p2p { + ...InternshipP2PEvaluation + } +} + +query getInternshipAttemptEvaluationsInfo($goalId: ID!) { + student { + getProjectAttemptEvaluationsInfo(goalId: $goalId) { + ...InternshipAttemptEvaluations + } + } +} \ No newline at end of file diff --git a/schema/operations/getInternshipInfo.gql b/schema/operations/getInternshipInfo.gql new file mode 100644 index 0000000..c798f5f --- /dev/null +++ b/schema/operations/getInternshipInfo.gql @@ -0,0 +1,179 @@ +fragment GroupProjectStatistics on GroupProjectStatistics { + inProgressTeams + evaluationTeams + finishedTeams + acceptedTeams + failedTeams +} + +fragment InternshipStudentReviewList on InternshipStudentReviewList { + reviewModelList { + reviewOrderNumber + planTimeMentorReview + factTimeMentorReview + percentageMentorReview + commentMentorReview + threshold + } + numberReview + studentProgressInternshipId +} + +fragment ProjectReviewsInfo on ProjectReviewsInfo { + reviewByStudentCount + relevantReviewByStudentsCount + reviewByInspectionStaffCount + relevantReviewByInspectionStaffCount +} + +fragment ProjectStatistics on ProjectStatistics { + registeredStudents + inProgressStudents + evaluationStudents + finishedStudents + acceptedStudents + failedStudents + retriedStudentsPercentage + groupProjectStatistics { + ...GroupProjectStatistics + } +} + +fragment InternshipTimelineItem on ProjectTimelineItem { + type + status + start + end + order + children { + type + elementType + status + start + end + order + } +} + +fragment CurrentTaskInfo on StudentTask { + id + taskId + task { + id + assignmentType + studentTaskAdditionalAttributes { + cookiesCount + maxCodeReviewCount + codeReviewCost + ciCdMode + } + checkTypes + } + lastAnswer { + id + } +} + +fragment RetrySettings on ModuleAttemptsSettings { + maxModuleAttempts + isUnlimitedAttempts +} + +fragment InternshipStudentReviewInfo on InternshipStudentReviewInfo { + internshipStudentReviewList { + ...InternshipStudentReviewList + } +} + +fragment InternshipApplicantInfo on InternshipStudentInfo { + link + internshipStartTime + internshipCompletionTime +} + +fragment P2PInfo on P2PChecksInfo { + cookiesCount + periodOfVerification + projectReviewsInfo { + ...ProjectReviewsInfo + } +} + +fragment InternshipModuleCoverInfo on ModuleCoverInformation { + softSkills { + softSkillId + softSkillName + totalPower + maxPower + currentUserPower + achievedUserPower + } + timeline { + ...InternshipTimelineItem + } + projectStatistics { + ...ProjectStatistics + } +} + +fragment InternshipInfo on StudentModule { + id + moduleTitle + finalPercentage + finalPoint + goalExecutionType + displayedGoalStatus + accessBeforeStartProgress + resultModuleCompletion + finishedExecutionDateByScheduler + durationFromStageSubjectGroupPlan + currentAttemptNumber + isDeadlineFree + isRetryAvailable + localCourseId + courseBaseParameters { + isGradedCourse + } + studyModule { + retrySettings { + ...RetrySettings + } + id + idea + duration + goalPoint + levels { + id + goalElements { + id + tasks { + id + taskId + } + } + } + } + currentTask { + ...CurrentTaskInfo + } +} + +query getInternshipInfo($goalId: ID!) { + student { + getModuleById(goalId: $goalId) { + ...InternshipInfo + } + getModuleCoverInformation(goalId: $goalId) { + ...InternshipModuleCoverInfo + } + getP2PChecksInfo(goalId: $goalId) { + ...P2PInfo + } + getInternshipDataById(goalId: $goalId) { + ...InternshipApplicantInfo + } + getInternshipReviewDataInfo(goalId: $goalId) { + ...InternshipStudentReviewInfo + } + } +} \ No newline at end of file diff --git a/schema/operations/getInvitationsCount.gql b/schema/operations/getInvitationsCount.gql new file mode 100644 index 0000000..ece0a85 --- /dev/null +++ b/schema/operations/getInvitationsCount.gql @@ -0,0 +1,5 @@ +query getInvitationsCount { + team { + getCreatedJoinTeamRequestCount + } +} \ No newline at end of file diff --git a/schema/operations/getIsDisbandRequestAlreadySent.gql b/schema/operations/getIsDisbandRequestAlreadySent.gql new file mode 100644 index 0000000..5a574d2 --- /dev/null +++ b/schema/operations/getIsDisbandRequestAlreadySent.gql @@ -0,0 +1,5 @@ +query getIsDisbandRequestAlreadySent($teamId: UUID!) { + student { + isRequestBeenSentToTeamDisband(teamId: $teamId) + } +} \ No newline at end of file diff --git a/schema/operations/getIsHonorRatingNeeded.gql b/schema/operations/getIsHonorRatingNeeded.gql new file mode 100644 index 0000000..fbed4d5 --- /dev/null +++ b/schema/operations/getIsHonorRatingNeeded.gql @@ -0,0 +1,5 @@ +query getIsHonorRatingNeeded { + honorRating { + isHonorRatingNeeded + } +} \ No newline at end of file diff --git a/schema/operations/getLinkToPrivateStudentGitlabProjectByAnswerId.gql b/schema/operations/getLinkToPrivateStudentGitlabProjectByAnswerId.gql new file mode 100644 index 0000000..98eb6f9 --- /dev/null +++ b/schema/operations/getLinkToPrivateStudentGitlabProjectByAnswerId.gql @@ -0,0 +1,8 @@ +query getLinkToPrivateStudentGitlabProjectByAnswerId($studentAnswerId: ID!) { + student { + getLinkToPrivateStudentGitlabProjectByAnswerId(answerId: $studentAnswerId) { + httpsLink + sshLink + } + } +} \ No newline at end of file diff --git a/schema/operations/getLocalCourseGoals.gql b/schema/operations/getLocalCourseGoals.gql new file mode 100644 index 0000000..75da3b6 --- /dev/null +++ b/schema/operations/getLocalCourseGoals.gql @@ -0,0 +1,40 @@ +fragment RetrySettings on ModuleAttemptsSettings { + maxModuleAttempts + isUnlimitedAttempts +} + +fragment LocalCourse on LocalCourseGoalInformation { + localCourseGoalId + goalId + goalName + description + projectHours + signUpDate + beginDate + deadlineDate + checkDate + isContentAvailable + executionType + finalPoint + finalPercentage + status + deadlineFree + retriesUsed + retrySettings { + ...RetrySettings + } +} + +query getLocalCourseGoals($localCourseId: ID!) { + course { + getLocalCourseGoals(localCourseId: $localCourseId) { + localCourseId + globalCourseId + courseName + courseType + localCourseGoals { + ...LocalCourse + } + } + } +} \ No newline at end of file diff --git a/schema/operations/getLocalCourseGoalsInfo.gql b/schema/operations/getLocalCourseGoalsInfo.gql new file mode 100644 index 0000000..8c7b8a3 --- /dev/null +++ b/schema/operations/getLocalCourseGoalsInfo.gql @@ -0,0 +1,20 @@ +fragment LocalCourseGoals on LocalCourseGoals { + courseType + displayedCourseStatus + localCourseGoals { + finalPercentage + status + localCourseGoalId + goalId + goalName + executionType + } +} + +query getLocalCourseGoalsInfo($localCourseId: ID!) { + course { + getLocalCourseGoals(localCourseId: $localCourseId) { + ...LocalCourseGoals + } + } +} \ No newline at end of file diff --git a/schema/operations/getMySuggestedActivities.gql b/schema/operations/getMySuggestedActivities.gql new file mode 100644 index 0000000..1536e46 --- /dev/null +++ b/schema/operations/getMySuggestedActivities.gql @@ -0,0 +1,44 @@ +query getMySuggestedActivities($page: PagingInput!, $statuses: [ParticipantEventStatus]) { + event { + getMySuggestedActivities(page: $page, statuses: $statuses) { + id + start + end + eventType + description + eventCode + activity { + organizers { + id + login + } + eventCreator { + id + login + } + comments { + type + createTs + comment + } + averageFeedbackRating + isVisible + activityType + status + activityEventId + eventId + name + description + location + currentStudentsCount + maxStudentCount + isRegistered + isInWaitList + isWaitListActive + stopRegisterDate + beginDate + endDate + } + } + } +} \ No newline at end of file diff --git a/schema/operations/getNotificationUserSettings.gql b/schema/operations/getNotificationUserSettings.gql new file mode 100644 index 0000000..179f480 --- /dev/null +++ b/schema/operations/getNotificationUserSettings.gql @@ -0,0 +1,16 @@ +query getNotificationUserSettings { + notificationConfiguration { + settings: getNotificationUserSettings { + groupTypeId + groupTypeName + typeId + typeName + channelId + channelName + channelActive + channelActiveSystem + channelLockedSystem + isMutable + } + } +} \ No newline at end of file diff --git a/schema/operations/getParentTagsList.gql b/schema/operations/getParentTagsList.gql new file mode 100644 index 0000000..e9e2023 --- /dev/null +++ b/schema/operations/getParentTagsList.gql @@ -0,0 +1,10 @@ +query getParentTagsList($filter: MediatekaTagsFilter!, $page: PagingInput!) { + mediateka { + getTagsByFilter(filter: $filter, page: $page) { + tags { + id + name + } + } + } +} \ No newline at end of file diff --git a/schema/operations/getPenaltiesCount.gql b/schema/operations/getPenaltiesCount.gql new file mode 100644 index 0000000..1c19ba9 --- /dev/null +++ b/schema/operations/getPenaltiesCount.gql @@ -0,0 +1,5 @@ +query getPenaltiesCount($statuses: [String]!) { + penalty { + countMyPenalties(statuses: $statuses) + } +} \ No newline at end of file diff --git a/schema/operations/getPenaltyList.gql b/schema/operations/getPenaltyList.gql new file mode 100644 index 0000000..8bd3715 --- /dev/null +++ b/schema/operations/getPenaltyList.gql @@ -0,0 +1,36 @@ +fragment Penalty on Penalty { + comment + id + duration + status + startTime + createTime + penaltySlot { + currentStudentsCount + description + duration + startTime + id + endTime + } + reasonId +} + +query getPenaltyList($statuses: [String]!, $from: DateTime, $to: DateTime, $sorting: [SortingField], $page: PagingInput!) { + penalty { + getMyPenalties( + statuses: $statuses + from: $from + to: $to + sorting: $sorting + page: $page + ) { + ...Penalty + } + getPenaltyReasons { + id + name + } + countMyPenalties(statuses: $statuses) + } +} \ No newline at end of file diff --git a/schema/operations/getPenaltyReasons.gql b/schema/operations/getPenaltyReasons.gql new file mode 100644 index 0000000..f2309a6 --- /dev/null +++ b/schema/operations/getPenaltyReasons.gql @@ -0,0 +1,8 @@ +query getPenaltyReasons { + penalty { + getPenaltyReasons { + id + name + } + } +} \ No newline at end of file diff --git a/schema/operations/getPenaltySlots.gql b/schema/operations/getPenaltySlots.gql new file mode 100644 index 0000000..e9773fc --- /dev/null +++ b/schema/operations/getPenaltySlots.gql @@ -0,0 +1,17 @@ +fragment PenaltySlot on PenaltySlot { + id + startTime + endTime + description + currentStudentsCount + maxStudentsCount + duration +} + +query getPenaltySlots($duration: Int!, $page: PagingInput!, $sorting: [SortingField]) { + penalty { + getPenaltyFreeSlots(duration: $duration, page: $page, sorting: $sorting) { + ...PenaltySlot + } + } +} \ No newline at end of file diff --git a/schema/operations/getPlatfSolution.gql b/schema/operations/getPlatfSolution.gql new file mode 100644 index 0000000..67e790b --- /dev/null +++ b/schema/operations/getPlatfSolution.gql @@ -0,0 +1,16 @@ +fragment PartialStudyProcessFile on StudyProcessFile { + studyProcessFileId + link + status +} + +query getPlatfSolution($studentGoalAttemptId: ID!) { + sc21StudentTaskCheck { + getPlatfSolutionInfo(studentGoalAttemptId: $studentGoalAttemptId) { + files { + ...PartialStudyProcessFile + } + comment + } + } +} \ No newline at end of file diff --git a/schema/operations/getPlatfSolutionInfo.gql b/schema/operations/getPlatfSolutionInfo.gql new file mode 100644 index 0000000..6ffba43 --- /dev/null +++ b/schema/operations/getPlatfSolutionInfo.gql @@ -0,0 +1,21 @@ +fragment PlatfSolutionInfo on PlatfSolutionInfo { + comment + files { + studyProcessFileId + link + status + statusDetails + updateDateTime + creatorLogin + fileExtension + fileSize + } +} + +query getPlatfSolutionInfo($studentGoalAttemptId: ID!) { + sc21StudentTaskCheck { + getPlatfSolutionInfo(studentGoalAttemptId: $studentGoalAttemptId) { + ...PlatfSolutionInfo + } + } +} \ No newline at end of file diff --git a/schema/operations/getProfileUser.gql b/schema/operations/getProfileUser.gql new file mode 100644 index 0000000..1fc5d29 --- /dev/null +++ b/schema/operations/getProfileUser.gql @@ -0,0 +1,27 @@ +fragment CurrentUserExperience on UserExperience { + id + cookiesCount + codeReviewPoints + coinsCount + level { + id + range { + id + levelCode + } + } +} + +query getProfileUser($userId: UUID!) { + school21 { + getBasePublicProfile(userId: $userId) { + avatarUrl + firstName + middleName + lastName + } + getExperiencePublicProfile(userId: $userId) { + ...CurrentUserExperience + } + } +} \ No newline at end of file diff --git a/schema/operations/getProjectAccessGroupIdByStudentAnswerId.gql b/schema/operations/getProjectAccessGroupIdByStudentAnswerId.gql new file mode 100644 index 0000000..d889de4 --- /dev/null +++ b/schema/operations/getProjectAccessGroupIdByStudentAnswerId.gql @@ -0,0 +1,5 @@ +query getProjectAccessGroupIdByStudentAnswerId($answerId: ID!) { + sc21StudentTaskCheck { + getProjectAccessGroupIdByStudentAnswerId(answerId: $answerId) + } +} \ No newline at end of file diff --git a/schema/operations/getProjectAttemptEvaluationsInfo.gql b/schema/operations/getProjectAttemptEvaluationsInfo.gql new file mode 100644 index 0000000..e990db5 --- /dev/null +++ b/schema/operations/getProjectAttemptEvaluationsInfo.gql @@ -0,0 +1,136 @@ +fragment OnlineReviewInfo on OnlineReview { + isOnline + video { + onlineVideoId + link + status + statusDetails + updateDateTime + } +} + +fragment EvaluationFeedback on ReviewFeedback { + id + comment + filledChecklist { + id + } + reviewFeedbackCategoryValues { + feedbackCategory + feedbackValue + id + } +} + +fragment Checklist on FilledChecklist { + id + checklistId + endTimeCheck + startTimeCheck + reviewer { + avatarUrl + login + businessAdminRoles { + id + school { + id + organizationType + } + } + } + reviewFeedback { + ...EvaluationFeedback + } + comment + receivedPoint + receivedPercentage + quickAction + checkType + onlineReview { + ...OnlineReviewInfo + } +} + +fragment AttemptTeamMember on User { + id + avatarUrl + login + userExperience { + level { + id + range { + levelCode + } + } + cookiesCount + codeReviewPoints + } +} + +fragment P2PEvaluation on P2PEvaluationInfo { + status + checklist { + ...Checklist + } +} + +fragment AttemptTeamWithMembers on TeamWithMembers { + team { + id + name + } + members { + role + user { + ...AttemptTeamMember + } + } +} + +fragment AtemptResult on StudentGoalAttempt { + finalPointProject + finalPercentageProject + resultModuleCompletion + resultDate +} + +fragment ProjectAttemptEvaluations_V1 on ProjectAttemptEvaluationsInfo_V1 { + studentAnswerId + studentGoalAttemptId + attemptStatus + attemptResult { + ...AtemptResult + } + team { + ...AttemptTeamWithMembers + } + p2p { + ...P2PEvaluation + } + auto { + status + receivedPercentage + endTimeCheck + resultInfo + } + codeReview { + averageMark + studentCodeReviews { + user { + avatarUrl + login + } + finalMark + markTime + reviewerCommentsCount + } + } +} + +query getProjectAttemptEvaluationsInfo($goalId: ID!, $studentId: UUID!) { + school21 { + getProjectAttemptEvaluationsInfo_V1(goalId: $goalId, studentId: $studentId) { + ...ProjectAttemptEvaluations_V1 + } + } +} \ No newline at end of file diff --git a/schema/operations/getProjectAttemptEvaluationsInfoByStudent.gql b/schema/operations/getProjectAttemptEvaluationsInfoByStudent.gql new file mode 100644 index 0000000..765da33 --- /dev/null +++ b/schema/operations/getProjectAttemptEvaluationsInfoByStudent.gql @@ -0,0 +1,134 @@ +fragment OnlineReviewInfo on OnlineReview { + isOnline + video { + onlineVideoId + link + status + statusDetails + updateDateTime + } +} + +fragment EvaluationFeedback on ReviewFeedback { + id + comment + filledChecklist { + id + } + reviewFeedbackCategoryValues { + feedbackCategory + feedbackValue + id + } +} + +fragment Checklist on FilledChecklist { + id + checklistId + endTimeCheck + startTimeCheck + reviewer { + avatarUrl + login + businessAdminRoles { + id + school { + id + organizationType + } + } + } + reviewFeedback { + ...EvaluationFeedback + } + comment + receivedPoint + receivedPercentage + quickAction + checkType + onlineReview { + ...OnlineReviewInfo + } +} + +fragment AttemptTeamMember on User { + id + avatarUrl + login + userExperience { + level { + id + range { + levelCode + } + } + cookiesCount + codeReviewPoints + } +} + +fragment P2PEvaluation on P2PEvaluationInfo { + status + checklist { + ...Checklist + } +} + +fragment AttemptTeamWithMembers on TeamWithMembers { + team { + id + name + } + members { + role + user { + ...AttemptTeamMember + } + } +} + +fragment AtemptResult on StudentGoalAttempt { + finalPointProject + finalPercentageProject + resultModuleCompletion + resultDate +} + +fragment ProjectAttemptEvaluations on ProjectAttemptEvaluationsInfo { + studentAnswerId + attemptResult { + ...AtemptResult + } + team { + ...AttemptTeamWithMembers + } + p2p { + ...P2PEvaluation + } + auto { + status + receivedPercentage + endTimeCheck + resultInfo + } + codeReview { + averageMark + studentCodeReviews { + user { + avatarUrl + login + } + finalMark + markTime + reviewerCommentsCount + } + } +} + +query getProjectAttemptEvaluationsInfoByStudent($goalId: ID!, $studentId: UUID!) { + school21 { + getProjectAttemptEvaluationsInfo(goalId: $goalId, studentId: $studentId) { + ...ProjectAttemptEvaluations + } + } +} \ No newline at end of file diff --git a/schema/operations/getProjectConsistencyInfo.gql b/schema/operations/getProjectConsistencyInfo.gql new file mode 100644 index 0000000..693e1c5 --- /dev/null +++ b/schema/operations/getProjectConsistencyInfo.gql @@ -0,0 +1,9 @@ +query getProjectConsistencyInfo($goalId: ID!) { + school21 { + loadGoalConsistencyInfo(goalId: $goalId) { + goalId + isConsistent + isConstructorsValid + } + } +} \ No newline at end of file diff --git a/schema/operations/getProjectGitlabInfo.gql b/schema/operations/getProjectGitlabInfo.gql new file mode 100644 index 0000000..99b82da --- /dev/null +++ b/schema/operations/getProjectGitlabInfo.gql @@ -0,0 +1,11 @@ +query getProjectGitlabInfo($answerId: ID!) { + student { + getPrivateGitlabProjectLinkInfoByAnswerId(answerId: $answerId) { + gitlabProjectId + sshLink + httpsLink + status + hasOpenedMR + } + } +} \ No newline at end of file diff --git a/schema/operations/getProjectInfo.gql b/schema/operations/getProjectInfo.gql new file mode 100644 index 0000000..e351e02 --- /dev/null +++ b/schema/operations/getProjectInfo.gql @@ -0,0 +1,181 @@ +fragment GroupProjectStatistics on GroupProjectStatistics { + inProgressTeams + evaluationTeams + finishedTeams + acceptedTeams + failedTeams +} + +fragment TimelineItemChildren on ProjectTimelineItem { + type + elementType + status + start + end + order +} + +fragment ProjectReviewsInfo on ProjectReviewsInfo { + reviewByStudentCount + relevantReviewByStudentsCount + reviewByInspectionStaffCount + relevantReviewByInspectionStaffCount +} + +fragment ProjectStatistics on ProjectStatistics { + registeredStudents + inProgressStudents + evaluationStudents + finishedStudents + acceptedStudents + failedStudents + retriedStudentsPercentage + groupProjectStatistics { + ...GroupProjectStatistics + } +} + +fragment TimelineItem on ProjectTimelineItem { + type + status + start + end + children { + ...TimelineItemChildren + } +} + +fragment CurrentInternshipTaskInfo on StudentTask { + id + taskId + task { + id + assignmentType + taskSolutionType + studentTaskAdditionalAttributes { + cookiesCount + maxCodeReviewCount + codeReviewCost + ciCdMode + } + checkTypes + taskSolutionType + } + lastAnswer { + id + } + teamSettings { + ...teamSettingsInfo + } +} + +fragment RetrySettings on ModuleAttemptsSettings { + maxModuleAttempts + isUnlimitedAttempts +} + +fragment teamSettingsInfo on TeamSettings { + teamCreateOption + minAmountMember + maxAmountMember + enableSurrenderTeam +} + +fragment StudentsCodeReview on StudentCodeReviewsWithCountRound { + countRound1 + countRound2 + codeReviewsInfo { + maxCodeReviewCount + codeReviewDuration + codeReviewCost + } +} + +fragment P2PInfo on P2PChecksInfo { + cookiesCount + periodOfVerification + projectReviewsInfo { + ...ProjectReviewsInfo + } +} + +fragment ModuleCoverInfo on ModuleCoverInformation { + isOwnStudentTimeline + softSkills { + softSkillId + softSkillName + totalPower + maxPower + currentUserPower + achievedUserPower + teamRole + } + timeline { + ...TimelineItem + } + projectStatistics { + ...ProjectStatistics + } +} + +fragment ProjectInfo on StudentModule { + id + moduleTitle + finalPercentage + finalPoint + goalExecutionType + displayedGoalStatus + accessBeforeStartProgress + resultModuleCompletion + finishedExecutionDateByScheduler + durationFromStageSubjectGroupPlan + currentAttemptNumber + isDeadlineFree + isRetryAvailable + localCourseId + courseBaseParameters { + isGradedCourse + } + teamSettings { + ...teamSettingsInfo + } + studyModule { + id + idea + duration + goalPoint + retrySettings { + ...RetrySettings + } + levels { + id + goalElements { + id + tasks { + id + taskId + } + } + } + } + currentTask { + ...CurrentInternshipTaskInfo + } +} + +query getProjectInfo($goalId: ID!) { + student { + getModuleById(goalId: $goalId) { + ...ProjectInfo + } + getModuleCoverInformation(goalId: $goalId) { + ...ModuleCoverInfo + } + getP2PChecksInfo(goalId: $goalId) { + ...P2PInfo + } + getStudentCodeReviewByGoalId(goalId: $goalId) { + ...StudentsCodeReview + } + } +} \ No newline at end of file diff --git a/schema/operations/getProjectInfoByStudent.gql b/schema/operations/getProjectInfoByStudent.gql new file mode 100644 index 0000000..abd05f7 --- /dev/null +++ b/schema/operations/getProjectInfoByStudent.gql @@ -0,0 +1,177 @@ +fragment GroupProjectStatistics on GroupProjectStatistics { + inProgressTeams + evaluationTeams + finishedTeams + acceptedTeams + failedTeams +} + +fragment TimelineItemChildren on ProjectTimelineItem { + type + elementType + status + start + end + order +} + +fragment ProjectReviewsInfo on ProjectReviewsInfo { + reviewByStudentCount + relevantReviewByStudentsCount + reviewByInspectionStaffCount + relevantReviewByInspectionStaffCount +} + +fragment ProjectStatistics on ProjectStatistics { + registeredStudents + inProgressStudents + evaluationStudents + finishedStudents + acceptedStudents + failedStudents + retriedStudentsPercentage + groupProjectStatistics { + ...GroupProjectStatistics + } +} + +fragment TimelineItem on ProjectTimelineItem { + type + status + start + end + children { + ...TimelineItemChildren + } +} + +fragment CurrentInternshipTaskInfo on StudentTask { + id + taskId + task { + id + assignmentType + taskSolutionType + studentTaskAdditionalAttributes { + cookiesCount + maxCodeReviewCount + codeReviewCost + ciCdMode + } + checkTypes + taskSolutionType + } + lastAnswer { + id + } + teamSettings { + ...teamSettingsInfo + } +} + +fragment RetrySettings on ModuleAttemptsSettings { + maxModuleAttempts + isUnlimitedAttempts +} + +fragment teamSettingsInfo on TeamSettings { + teamCreateOption + minAmountMember + maxAmountMember + enableSurrenderTeam +} + +fragment StudentGoalRetryInfo on StudentGoalRetryInfo { + totalRetryValue + usedRetryCount + unlimitedAttempts +} + +fragment P2PInfo on P2PChecksInfo { + cookiesCount + periodOfVerification + projectReviewsInfo { + ...ProjectReviewsInfo + } +} + +fragment ModuleCoverInfo on ModuleCoverInformation { + isOwnStudentTimeline + softSkills { + softSkillId + softSkillName + totalPower + maxPower + currentUserPower + achievedUserPower + teamRole + } + timeline { + ...TimelineItem + } + projectStatistics { + ...ProjectStatistics + } +} + +fragment ProjectInfo on StudentModule { + id + moduleTitle + finalPercentage + finalPoint + goalExecutionType + displayedGoalStatus + accessBeforeStartProgress + resultModuleCompletion + finishedExecutionDateByScheduler + durationFromStageSubjectGroupPlan + currentAttemptNumber + isDeadlineFree + isRetryAvailable + localCourseId + courseBaseParameters { + isGradedCourse + } + teamSettings { + ...teamSettingsInfo + } + studyModule { + id + idea + duration + goalPoint + retrySettings { + ...RetrySettings + } + levels { + id + goalElements { + id + tasks { + id + taskId + } + } + } + } + currentTask { + ...CurrentInternshipTaskInfo + } +} + +query getProjectInfoByStudent($goalId: ID!, $studentId: UUID!) { + school21 { + getModuleById(goalId: $goalId, studentId: $studentId) { + ...ProjectInfo + } + getModuleCoverInformation(goalId: $goalId, studentId: $studentId) { + ...ModuleCoverInfo + } + getP2PChecksInfo(goalId: $goalId, studentId: $studentId) { + ...P2PInfo + } + getGoalRetryInfo(goalId: $goalId, studentId: $studentId) { + ...StudentGoalRetryInfo + } + } +} \ No newline at end of file diff --git a/schema/operations/getProjectTeamMembers.gql b/schema/operations/getProjectTeamMembers.gql new file mode 100644 index 0000000..bf106ed --- /dev/null +++ b/schema/operations/getProjectTeamMembers.gql @@ -0,0 +1,41 @@ +fragment ProjectTeamMember on User { + id + avatarUrl + login + userExperience { + level { + id + range { + levelCode + } + } + cookiesCount + codeReviewPoints + } + activeSchoolShortName +} + +fragment ProjectTeamMembers on ProjectTeamMembers { + id + teamLead { + ...ProjectTeamMember + } + members { + ...ProjectTeamMember + } + invitedUsers { + ...ProjectTeamMember + } + teamName + teamStatus + minTeamMemberCount + maxTeamMemberCount +} + +query getProjectTeamMembers($studentTaskId: ID!) { + student { + getProjectTeamMembers(studentTaskId: $studentTaskId) { + ...ProjectTeamMembers + } + } +} \ No newline at end of file diff --git a/schema/operations/getProjectTeamMembersByTeam.gql b/schema/operations/getProjectTeamMembersByTeam.gql new file mode 100644 index 0000000..a8b6f3c --- /dev/null +++ b/schema/operations/getProjectTeamMembersByTeam.gql @@ -0,0 +1,34 @@ +fragment TeamMemberUser on User { + id + avatarUrl + login + userExperience { + level { + id + levelCode + range { + levelCode + } + } + cookiesCount + codeReviewPoints + } + activeSchoolShortName +} + +fragment TeamMember on TeamMember { + user { + ...TeamMemberUser + } + role +} + +query getProjectTeamMembersByTeam($teamId: UUID!) { + team { + getTeamMembersByTeam(teamId: $teamId) { + teamId + role + ...TeamMember + } + } +} \ No newline at end of file diff --git a/schema/operations/getProjectTeamWithMembers.gql b/schema/operations/getProjectTeamWithMembers.gql new file mode 100644 index 0000000..fb0eaa8 --- /dev/null +++ b/schema/operations/getProjectTeamWithMembers.gql @@ -0,0 +1,45 @@ +fragment TeamMemberInProjectPage on User { + id + avatarUrl + login + userExperience { + level { + id + range { + levelCode + } + } + cookiesCount + codeReviewPoints + } + activeSchoolShortName +} + +query getProjectTeamWithMembers($goalId: ID!) { + student { + getProjectTeamWithMembers(goalId: $goalId) { + teamWithMembers { + team { + id + name + status + minTeamMemberCount + maxTeamMemberCount + } + members { + role + user { + ...TeamMemberInProjectPage + } + } + } + invitedStudents { + student { + user { + ...TeamMemberInProjectPage + } + } + } + } + } +} \ No newline at end of file diff --git a/schema/operations/getProjectTeamWithMembersByStudent.gql b/schema/operations/getProjectTeamWithMembersByStudent.gql new file mode 100644 index 0000000..814a326 --- /dev/null +++ b/schema/operations/getProjectTeamWithMembersByStudent.gql @@ -0,0 +1,53 @@ +fragment ProjectTeamMember on User { + id + avatarUrl + login + userExperience { + level { + id + range { + levelCode + } + } + cookiesCount + codeReviewPoints + } + activeSchoolShortName +} + +fragment TeamMemberWithRole on TeamMember { + role + user { + ...ProjectTeamMember + } +} + +fragment TeamWithMembers on ProjectTeamWithMembers { + teamWithMembers { + team { + id + name + status + minTeamMemberCount + maxTeamMemberCount + } + members { + ...TeamMemberWithRole + } + } + invitedStudents { + student { + user { + ...ProjectTeamMember + } + } + } +} + +query getProjectTeamWithMembersByStudent($goalId: ID!, $studentId: UUID!) { + school21 { + getProjectTeamWithMembers(goalId: $goalId, studentId: $studentId) { + ...TeamWithMembers + } + } +} \ No newline at end of file diff --git a/schema/operations/getProjectsWithOpenTeams.gql b/schema/operations/getProjectsWithOpenTeams.gql new file mode 100644 index 0000000..4abcaf4 --- /dev/null +++ b/schema/operations/getProjectsWithOpenTeams.gql @@ -0,0 +1,99 @@ +fragment TeamMemberUser on User { + id + avatarUrl + login + userExperience { + level { + id + levelCode + range { + levelCode + } + } + cookiesCount + codeReviewPoints + } + activeSchoolShortName +} + +fragment TeamMember on TeamMember { + user { + ...TeamMemberUser + } + role +} + +fragment InvitatingTeamsToProject on TeamWithMembers { + team { + id + name + currentTeamMemberCount + } + captains { + ...TeamMemberUser + } +} + +fragment CurrentTeamInvitationProject on TeamWithMembers { + team { + id + name + } + members { + ...TeamMember + } +} + +fragment SoftSkill on SoftSkillPoint { + softSkillName + softSkillId + totalPower + currentUserPower + maxPower + teamRole +} + +fragment ProjectWithTeamInvitations on GroupProject { + module { + id + moduleTitle + openRegistration + startProgress + durationFromStageSubjectGroupPlan + isDeadlineFree + localCourseId + studyModule { + duration + } + softSkills { + ...SoftSkill + } + teamSettings { + minAmountMember + maxAmountMember + location + } + currentTask { + id + task { + studentTaskAdditionalAttributes { + pointTask + } + } + } + } + currentTeam { + ...CurrentTeamInvitationProject + } + invitingTeams { + ...InvitatingTeamsToProject + } +} + +query getProjectsWithOpenTeams { + student { + getGroupProjectsWithOpenTeams { + ...ProjectWithTeamInvitations + } + } +} \ No newline at end of file diff --git a/schema/operations/getRecommendedProjects.gql b/schema/operations/getRecommendedProjects.gql new file mode 100644 index 0000000..d47fa3c --- /dev/null +++ b/schema/operations/getRecommendedProjects.gql @@ -0,0 +1,29 @@ +fragment StudentProjectItem on StudentItem { + goalId + name + description + experience + dateTime + finalPercentage + laboriousness + executionType + goalStatus + courseType + displayedCourseStatus + amountAnswers + amountMembers + amountJoinedMembers + amountReviewedAnswers + amountCodeReviewMembers + amountCurrentCodeReviewMembers + groupName + localCourseId +} + +query getRecommendedProjects($userId: ID!) { + student { + getRecommendedProjects(userId: $userId) { + ...StudentProjectItem + } + } +} \ No newline at end of file diff --git a/schema/operations/getSaleProgressPercentages.gql b/schema/operations/getSaleProgressPercentages.gql new file mode 100644 index 0000000..8b02e3e --- /dev/null +++ b/schema/operations/getSaleProgressPercentages.gql @@ -0,0 +1,12 @@ +fragment RpSaleInfo on RpSaleProgress { + rpType + progressPercentage +} + +query getSaleProgressPercentages { + school21 { + getSaleProgressPercentages { + ...RpSaleInfo + } + } +} \ No newline at end of file diff --git a/schema/operations/getSearchHistory.gql b/schema/operations/getSearchHistory.gql new file mode 100644 index 0000000..0422bce --- /dev/null +++ b/schema/operations/getSearchHistory.gql @@ -0,0 +1,8 @@ +query getSearchHistory { + globalSearch { + getSearchHistoryTooltips { + tooltipText + tooltipCategory + } + } +} \ No newline at end of file diff --git a/schema/operations/getSearchItems.gql b/schema/operations/getSearchItems.gql new file mode 100644 index 0000000..aa5f8ff --- /dev/null +++ b/schema/operations/getSearchItems.gql @@ -0,0 +1,55 @@ +fragment MediatekaTagV2ItemFragment on TagHierarchyElement { + tagId + name + tagType + children { + tagId + name + tagType + children { + tagId + name + tagType + children { + tagId + name + tagType + } + } + } +} + +fragment MediatekaMediaFragment on ContentItem { + itemId + creatorUserId + tagIds + tagsV2 { + ...MediatekaTagV2ItemFragment + } + fileName + contentName + contentType + contentUrl + createDate + contentAuthor + previewUrl + description + fileSize + subtitleLink + itemBookmarked + stages { + id + name + } +} + +query getSearchItems($filter: MediatekaItemsFilter, $page: PagingInput!) { + mediateka { + searchItems(filter: $filter, page: $page) { + content { + ...MediatekaMediaFragment + } + totalItems + } + } +} \ No newline at end of file diff --git a/schema/operations/getSecondRoundCodeReviewProjects.gql b/schema/operations/getSecondRoundCodeReviewProjects.gql new file mode 100644 index 0000000..cf8aacc --- /dev/null +++ b/schema/operations/getSecondRoundCodeReviewProjects.gql @@ -0,0 +1,19 @@ +fragment CodeReviewProject on CodeReview { + goalId + goalTitle + studentGoalId + studentCodeReviewStatus + goalExecutionType + studentTaskAdditionalAttributesModel { + codeReviewCost + codeReviewDuration + } +} + +query getSecondRoundCodeReviewProjects($paging: PagingInput!) { + student { + getSecondRoundCodeReviewProjects(paging: $paging) { + ...CodeReviewProject + } + } +} \ No newline at end of file diff --git a/schema/operations/getStageClassmates.gql b/schema/operations/getStageClassmates.gql new file mode 100644 index 0000000..c96f009 --- /dev/null +++ b/schema/operations/getStageClassmates.gql @@ -0,0 +1,11 @@ +query getStageClassmates($textSearch: String) { + school21 { + getStageClassmates(textSearch: $textSearch) { + id + login + firstName + middleName + lastName + } + } +} \ No newline at end of file diff --git a/schema/operations/getStageInfo.gql b/schema/operations/getStageInfo.gql new file mode 100644 index 0000000..3d41ef4 --- /dev/null +++ b/schema/operations/getStageInfo.gql @@ -0,0 +1,27 @@ +query getStageInfo { + user { + getCurrentUser { + id + studentRoles { + status + school { + organizationType + } + stageGroup { + classSubjects { + stage { + name + } + } + name + stage + isActive + } + } + } + getAllStagesTenantAware { + id + name + } + } +} \ No newline at end of file diff --git a/schema/operations/getStudentCodeReviewByStudentGoalId.gql b/schema/operations/getStudentCodeReviewByStudentGoalId.gql new file mode 100644 index 0000000..8bcd5c7 --- /dev/null +++ b/schema/operations/getStudentCodeReviewByStudentGoalId.gql @@ -0,0 +1,15 @@ +fragment StudentsCodeReviewByStudent on StudentCodeReview { + reviewerStudentId + user { + login + avatarUrl + } +} + +query getStudentCodeReviewByStudentGoalId($studentGoalId: ID!) { + student { + getStudentCodeReviewByStudentGoalId(studentGoalId: $studentGoalId) { + ...StudentsCodeReviewByStudent + } + } +} \ No newline at end of file diff --git a/schema/operations/getStudentCurrentProjects.gql b/schema/operations/getStudentCurrentProjects.gql new file mode 100644 index 0000000..f1486fa --- /dev/null +++ b/schema/operations/getStudentCurrentProjects.gql @@ -0,0 +1,29 @@ +fragment StudentProjectItem on StudentItem { + goalId + name + description + experience + dateTime + finalPercentage + laboriousness + executionType + goalStatus + courseType + displayedCourseStatus + amountAnswers + amountMembers + amountJoinedMembers + amountReviewedAnswers + amountCodeReviewMembers + amountCurrentCodeReviewMembers + groupName + localCourseId +} + +query getStudentCurrentProjects($userId: ID!) { + student { + getStudentCurrentProjects(userId: $userId) { + ...StudentProjectItem + } + } +} \ No newline at end of file diff --git a/schema/operations/getStudentFeedbackById.gql b/schema/operations/getStudentFeedbackById.gql new file mode 100644 index 0000000..a690587 --- /dev/null +++ b/schema/operations/getStudentFeedbackById.gql @@ -0,0 +1,29 @@ +query getStudentFeedbackById($studentFeedbackId: ID!) { + sc21StudentTaskCheck { + getStudentFeedbackById(studentFeedbackId: $studentFeedbackId) { + id + studentGoalAttemptId + goalId + goalName + goalExecutionType + pointPercent + resultModuleCompletion + resultAttemptDate + serialNumber + feedbackForm { + id + feedbackFormEnum + name + feedbackFormQuestions { + id + serialNumber + titleEn + descriptionEn + feedbackSectionEnum + typeValue + quickActionEn + } + } + } + } +} \ No newline at end of file diff --git a/schema/operations/getStudentFinishedProjects.gql b/schema/operations/getStudentFinishedProjects.gql new file mode 100644 index 0000000..6ba0879 --- /dev/null +++ b/schema/operations/getStudentFinishedProjects.gql @@ -0,0 +1,29 @@ +fragment StudentProjectItem on StudentItem { + goalId + name + description + experience + dateTime + finalPercentage + laboriousness + executionType + goalStatus + courseType + displayedCourseStatus + amountAnswers + amountMembers + amountJoinedMembers + amountReviewedAnswers + amountCodeReviewMembers + amountCurrentCodeReviewMembers + groupName + localCourseId +} + +query getStudentFinishedProjects($userId: ID!) { + student { + getStudentFinishedProjects(userId: $userId) { + ...StudentProjectItem + } + } +} \ No newline at end of file diff --git a/schema/operations/getStudentIsDeadlinesEnabled.gql b/schema/operations/getStudentIsDeadlinesEnabled.gql new file mode 100644 index 0000000..6eed103 --- /dev/null +++ b/schema/operations/getStudentIsDeadlinesEnabled.gql @@ -0,0 +1,5 @@ +query getStudentIsDeadlinesEnabled { + student { + isDeadlinesEnabled + } +} \ No newline at end of file diff --git a/schema/operations/getStudentStageGroupS21.gql b/schema/operations/getStudentStageGroupS21.gql new file mode 100644 index 0000000..b8d1e1d --- /dev/null +++ b/schema/operations/getStudentStageGroupS21.gql @@ -0,0 +1,9 @@ +query getStudentStageGroupS21($studentId: UUID!) { + school21 { + getStageGroupS21PublicProfile(studentId: $studentId) { + waveId + waveName + eduForm + } + } +} \ No newline at end of file diff --git a/schema/operations/getTaskSolutionType.gql b/schema/operations/getTaskSolutionType.gql new file mode 100644 index 0000000..c94f383 --- /dev/null +++ b/schema/operations/getTaskSolutionType.gql @@ -0,0 +1,5 @@ +query getTaskSolutionType($taskId: ID!) { + sc21StudentTaskCheck { + getTaskSolutionType(taskId: $taskId) + } +} \ No newline at end of file diff --git a/schema/operations/getTasksById.gql b/schema/operations/getTasksById.gql new file mode 100644 index 0000000..71478ed --- /dev/null +++ b/schema/operations/getTasksById.gql @@ -0,0 +1,18 @@ +fragment StudentTaskInProject on StudentTask { + id + task { + id + content { + id + body + } + } +} + +query getTasksById($goalId: ID!, $localCourseId: ID, $taskId: ID!) { + school21 { + getTasksById(goalId: $goalId, localCourseId: $localCourseId, taskId: $taskId) { + ...StudentTaskInProject + } + } +} \ No newline at end of file diff --git a/schema/operations/getTeamLeadPeriodSettings.gql b/schema/operations/getTeamLeadPeriodSettings.gql new file mode 100644 index 0000000..e022a4b --- /dev/null +++ b/schema/operations/getTeamLeadPeriodSettings.gql @@ -0,0 +1,20 @@ +fragment TeamLeadGoalPeriodSettings on TeamLeadGoalPeriodSettings { + signUpDate + beginDate + checkDate + deadlineDate + isTeamLeadPeriodsEqual +} + +query getTeamLeadPeriodSettings($goalId: ID!, $currentStudentLocalCourseId: ID!, $location: LocationEnum!, $teamLeadUserId: UUID!) { + student { + getTeamLeadPeriodSettings( + goalId: $goalId + currentStudentLocalCourseId: $currentStudentLocalCourseId + location: $location + teamLeadUserId: $teamLeadUserId + ) { + ...TeamLeadGoalPeriodSettings + } + } +} \ No newline at end of file diff --git a/schema/operations/getTournamentNotificationResults.gql b/schema/operations/getTournamentNotificationResults.gql new file mode 100644 index 0000000..980c53a --- /dev/null +++ b/schema/operations/getTournamentNotificationResults.gql @@ -0,0 +1,13 @@ +query getTournamentNotificationResults { + student { + getTournamentResults(isShown: false) { + id + power + coalitionRank + userRank + firstCoalitionName + coalitionName + timeClosed + } + } +} \ No newline at end of file diff --git a/schema/operations/getUpcomingEvents.gql b/schema/operations/getUpcomingEvents.gql new file mode 100644 index 0000000..a3513d2 --- /dev/null +++ b/schema/operations/getUpcomingEvents.gql @@ -0,0 +1,113 @@ +fragment Penalty on Penalty { + comment + id + duration + status + startTime + createTime + penaltySlot { + currentStudentsCount + description + duration + startTime + id + endTime + } + reasonId +} + +fragment UpcomingEvent on CalendarEvent { + id + start + end + bookings { + id + task { + id + goalName + } + } + eventSlots { + id + eventId + type + start + end + } + maxStudentCount + location + ipRange + eventType + eventCode + description + externalId + currentStudentsCount + exam { + examId + eventId + beginDate + endDate + location + ip + maxStudentCount + isVisible + name + goalId + isWaitListActive + isInWaitList + currentStudentsCount + createDate + updateDate + schoolId + stopRegisterDate + isRegistered + goalName + eventType + registrationAccessStatus + } + studentCodeReview { + studentGoalId + } + activity { + activityEventId + eventId + beginDate + endDate + location + description + maxStudentCount + isVisible + name + isWaitListActive + isInWaitList + currentStudentsCount + createDate + updateDate + schoolId + stopRegisterDate + isRegistered + activityType + eventType + isMandatory + status + organizers { + id + login + } + } + penalty { + ...Penalty + } +} + +query getUpcomingEvents($eventCodes: [String!]!, $registrationAccessStatusFilter: RegistartionStatusEnum, $page: PagingInput) { + calendarEventS21 { + getUpcomingEventsForRegistration( + eventCodes: $eventCodes + registrationAccessStatusFilter: $registrationAccessStatusFilter + page: $page + ) { + ...UpcomingEvent + } + } +} \ No newline at end of file diff --git a/schema/operations/getUserFeatureFlags.gql b/schema/operations/getUserFeatureFlags.gql new file mode 100644 index 0000000..48f790e --- /dev/null +++ b/schema/operations/getUserFeatureFlags.gql @@ -0,0 +1,8 @@ +query getUserFeatureFlags($entityId: String!) { + user { + getAllBackendConfigurations: getAllBackendConfigurationsV2(entityId: $entityId) { + propertyCode + value + } + } +} \ No newline at end of file diff --git a/schema/operations/getUserNotifications.gql b/schema/operations/getUserNotifications.gql new file mode 100644 index 0000000..916400f --- /dev/null +++ b/schema/operations/getUserNotifications.gql @@ -0,0 +1,17 @@ +query getUserNotifications($paging: PagingInput!) { + s21Notification { + getS21Notifications(paging: $paging) { + notifications { + id + relatedObjectType + relatedObjectId + message + time + wasRead + groupName + } + totalCount + groupNames + } + } +} \ No newline at end of file diff --git a/schema/operations/getUserNotificationsCount.gql b/schema/operations/getUserNotificationsCount.gql new file mode 100644 index 0000000..93d9974 --- /dev/null +++ b/schema/operations/getUserNotificationsCount.gql @@ -0,0 +1,5 @@ +query getUserNotificationsCount($wasReadIncluded: Boolean) { + s21Notification { + getS21NotificationsCount(wasReadIncluded: $wasReadIncluded) + } +} \ No newline at end of file diff --git a/schema/operations/getUserRestrictionsInfo.gql b/schema/operations/getUserRestrictionsInfo.gql new file mode 100644 index 0000000..32ef6f5 --- /dev/null +++ b/schema/operations/getUserRestrictionsInfo.gql @@ -0,0 +1,13 @@ +query getUserRestrictionsInfo { + school21 { + getUserRestrictions { + restrictionId + restrictionType + userId + schoolId + isActive + createdTs + updatedTs + } + } +} \ No newline at end of file diff --git a/schema/operations/getUsers.gql b/schema/operations/getUsers.gql new file mode 100644 index 0000000..cd35e14 --- /dev/null +++ b/schema/operations/getUsers.gql @@ -0,0 +1,13 @@ +query getUsers($userIds: [UUID!]!) { + school21 { + getUsers(userIds: $userIds) { + userId + login + firstName + middleName + lastName + avatarUrl + level + } + } +} \ No newline at end of file diff --git a/schema/operations/giveUpExam.gql b/schema/operations/giveUpExam.gql new file mode 100644 index 0000000..8059b2a --- /dev/null +++ b/schema/operations/giveUpExam.gql @@ -0,0 +1,10 @@ +mutation giveUpExam($goalId: ID!, $examEventId: ID, $taskId: ID, $skillId: ID) { + sc21ProjectFlow { + surrenderFromExam( + goalId: $goalId + examEventId: $examEventId + taskId: $taskId + skillId: $skillId + ) + } +} \ No newline at end of file diff --git a/schema/operations/leaveAndDisbandTeam.gql b/schema/operations/leaveAndDisbandTeam.gql new file mode 100644 index 0000000..51bce77 --- /dev/null +++ b/schema/operations/leaveAndDisbandTeam.gql @@ -0,0 +1,5 @@ +mutation leaveAndDisbandTeam($teamId: UUID!) { + student { + disbandTeam(teamId: $teamId) + } +} \ No newline at end of file diff --git a/schema/operations/leaveTeam.gql b/schema/operations/leaveTeam.gql new file mode 100644 index 0000000..d3a80ec --- /dev/null +++ b/schema/operations/leaveTeam.gql @@ -0,0 +1,9 @@ +mutation leaveTeam($teamId: UUID!, $exitReasonId: Int, $exitReasonDescription: String) { + student { + exitStudentFromTeam( + teamId: $teamId + exitReasonId: $exitReasonId + exitReasonDescription: $exitReasonDescription + ) + } +} \ No newline at end of file diff --git a/schema/operations/limitationRightsCreateDeadlineShiftRequest.gql b/schema/operations/limitationRightsCreateDeadlineShiftRequest.gql new file mode 100644 index 0000000..5dfdd64 --- /dev/null +++ b/schema/operations/limitationRightsCreateDeadlineShiftRequest.gql @@ -0,0 +1,9 @@ +mutation limitationRightsCreateDeadlineShiftRequest($deadlineId: UUID!, $comment: String!) { + student { + createDeadlineShiftRequest( + deadlineRequest: {deadlineId: $deadlineId, comment: $comment} + ) { + deadlineShiftRequestId + } + } +} \ No newline at end of file diff --git a/schema/operations/markAbsenceAtP2P.gql b/schema/operations/markAbsenceAtP2P.gql new file mode 100644 index 0000000..801ab1d --- /dev/null +++ b/schema/operations/markAbsenceAtP2P.gql @@ -0,0 +1,5 @@ +mutation markAbsenceAtP2P($bookingId: ID!) { + student { + markAbsenceInProtocol(bookingId: $bookingId) + } +} \ No newline at end of file diff --git a/schema/operations/markFilePending.gql b/schema/operations/markFilePending.gql new file mode 100644 index 0000000..c581b4c --- /dev/null +++ b/schema/operations/markFilePending.gql @@ -0,0 +1,19 @@ +fragment OnlineReviewVideoInfo on OnlineReviewVideo { + onlineVideoId + link + status + statusDetails + updateDateTime +} + +mutation markFilePending($filledChecklistId: ID!, $fileName: String!, $relativePath: String!) { + school21 { + markFilePending( + filledChecklistId: $filledChecklistId + fileName: $fileName + relativePath: $relativePath + ) { + ...OnlineReviewVideoInfo + } + } +} \ No newline at end of file diff --git a/schema/operations/markFileSolutionFailedToUpload.gql b/schema/operations/markFileSolutionFailedToUpload.gql new file mode 100644 index 0000000..0f29812 --- /dev/null +++ b/schema/operations/markFileSolutionFailedToUpload.gql @@ -0,0 +1,20 @@ +fragment StudyProcessFile on StudyProcessFile { + studyProcessFileId + link + status + statusDetails + updateDateTime + creatorLogin + fileExtension +} + +mutation markFileSolutionFailedToUpload($taskId: ID!, $fileCancelEvent: [StudyProcessFileFailOrCancelInput!]!) { + sc21StudentTaskCheck { + markFileSolutionFailedToUpload( + taskId: $taskId + fileCancelEvent: $fileCancelEvent + ) { + ...StudyProcessFile + } + } +} \ No newline at end of file diff --git a/schema/operations/markFileSolutionPending.gql b/schema/operations/markFileSolutionPending.gql new file mode 100644 index 0000000..20e4a96 --- /dev/null +++ b/schema/operations/markFileSolutionPending.gql @@ -0,0 +1,17 @@ +fragment StudyProcessFile on StudyProcessFile { + studyProcessFileId + link + status + statusDetails + updateDateTime + creatorLogin + fileExtension +} + +mutation markFileSolutionPending($taskId: ID!, $initialFileEvents: [StudyProcessFileInitialInput!]!) { + sc21StudentTaskCheck { + markFileSolutionPending(taskId: $taskId, initialFileEvents: $initialFileEvents) { + ...StudyProcessFile + } + } +} \ No newline at end of file diff --git a/schema/operations/markFileSolutionUploadCancelled.gql b/schema/operations/markFileSolutionUploadCancelled.gql new file mode 100644 index 0000000..89e02bf --- /dev/null +++ b/schema/operations/markFileSolutionUploadCancelled.gql @@ -0,0 +1,20 @@ +fragment StudyProcessFile on StudyProcessFile { + studyProcessFileId + link + status + statusDetails + updateDateTime + creatorLogin + fileExtension +} + +mutation markFileSolutionUploadCancelled($taskId: ID!, $studyProcessFileId: ID!) { + sc21StudentTaskCheck { + markFileSolutionUploadCancelled( + taskId: $taskId + studyProcessFileId: $studyProcessFileId + ) { + ...StudyProcessFile + } + } +} \ No newline at end of file diff --git a/schema/operations/markFileSolutionUploaded.gql b/schema/operations/markFileSolutionUploaded.gql new file mode 100644 index 0000000..b5fc32b --- /dev/null +++ b/schema/operations/markFileSolutionUploaded.gql @@ -0,0 +1,17 @@ +fragment StudyProcessFile on StudyProcessFile { + studyProcessFileId + link + status + statusDetails + updateDateTime + creatorLogin + fileExtension +} + +mutation markFileSolutionUploaded($taskId: ID!, $fileUploadEvents: [StudyProcessFileUploadInput!]!) { + sc21StudentTaskCheck { + markFileSolutionUploaded(taskId: $taskId, fileUploadEvents: $fileUploadEvents) { + ...StudyProcessFile + } + } +} \ No newline at end of file diff --git a/schema/operations/markOnlineReviewVideoFailedToUpload.gql b/schema/operations/markOnlineReviewVideoFailedToUpload.gql new file mode 100644 index 0000000..105c2df --- /dev/null +++ b/schema/operations/markOnlineReviewVideoFailedToUpload.gql @@ -0,0 +1,19 @@ +fragment OnlineReviewVideoInfo on OnlineReviewVideo { + onlineVideoId + link + status + statusDetails + updateDateTime +} + +mutation markOnlineReviewVideoFailedToUpload($filledChecklistId: ID!, $onlineReviewId: ID!, $errorMessage: String!) { + school21 { + markP2pCheckVideoFailedToUpload( + filledChecklistId: $filledChecklistId + onlineReviewId: $onlineReviewId + errorMessage: $errorMessage + ) { + ...OnlineReviewVideoInfo + } + } +} \ No newline at end of file diff --git a/schema/operations/markOnlineReviewVideoUploadCancelled.gql b/schema/operations/markOnlineReviewVideoUploadCancelled.gql new file mode 100644 index 0000000..202bd01 --- /dev/null +++ b/schema/operations/markOnlineReviewVideoUploadCancelled.gql @@ -0,0 +1,18 @@ +fragment OnlineReviewVideoInfo on OnlineReviewVideo { + onlineVideoId + link + status + statusDetails + updateDateTime +} + +mutation markOnlineReviewVideoUploadCancelled($filledChecklistId: ID!, $onlineReviewId: ID!) { + school21 { + markP2pCheckVideoUploadCancelled( + filledChecklistId: $filledChecklistId + onlineReviewId: $onlineReviewId + ) { + ...OnlineReviewVideoInfo + } + } +} \ No newline at end of file diff --git a/schema/operations/markOnlineReviewVideoUploaded.gql b/schema/operations/markOnlineReviewVideoUploaded.gql new file mode 100644 index 0000000..aed88b3 --- /dev/null +++ b/schema/operations/markOnlineReviewVideoUploaded.gql @@ -0,0 +1,19 @@ +fragment OnlineReviewVideoInfo on OnlineReviewVideo { + onlineVideoId + link + status + statusDetails + updateDateTime +} + +mutation markOnlineReviewVideoUploaded($filledChecklistId: ID!, $onlineReviewId: ID!, $videoSize: Int!) { + school21 { + markP2pCheckVideoUploaded( + filledChecklistId: $filledChecklistId + onlineReviewId: $onlineReviewId + videoSize: $videoSize + ) { + ...OnlineReviewVideoInfo + } + } +} \ No newline at end of file diff --git a/schema/operations/markTournamentNotificationShown.gql b/schema/operations/markTournamentNotificationShown.gql new file mode 100644 index 0000000..7a4be22 --- /dev/null +++ b/schema/operations/markTournamentNotificationShown.gql @@ -0,0 +1,8 @@ +mutation markTournamentNotificationShown($userTournamentResultId: [UUID!]!) { + student { + markTournamentResultAsShown(userTournamentResultIds: $userTournamentResultId) { + id + isShown + } + } +} \ No newline at end of file diff --git a/schema/operations/passwordChangeSetPassword.gql b/schema/operations/passwordChangeSetPassword.gql new file mode 100644 index 0000000..8d74a0e --- /dev/null +++ b/schema/operations/passwordChangeSetPassword.gql @@ -0,0 +1,7 @@ +mutation passwordChangeSetPassword($newPassword: String!, $oldPassword: String!) { + user { + setPassword(newPassword: $newPassword, oldPassword: $oldPassword) { + id + } + } +} \ No newline at end of file diff --git a/schema/operations/publicProfileGetAchievements.gql b/schema/operations/publicProfileGetAchievements.gql new file mode 100644 index 0000000..da9808a --- /dev/null +++ b/schema/operations/publicProfileGetAchievements.gql @@ -0,0 +1,13 @@ +query publicProfileGetAchievements($userId: UUID!) { + school21 { + getBadgesPublicProfile(userId: $userId) { + points + id + badge { + id + name + avatarUrl + } + } + } +} \ No newline at end of file diff --git a/schema/operations/publicProfileGetCoalition.gql b/schema/operations/publicProfileGetCoalition.gql new file mode 100644 index 0000000..904f50f --- /dev/null +++ b/schema/operations/publicProfileGetCoalition.gql @@ -0,0 +1,25 @@ +query publicProfileGetCoalition($userId: UUID!) { + student { + getUserTournamentWidget(userId: $userId) { + coalitionMember { + coalition { + avatarUrl + color + name + memberCount + } + currentTournamentPowerRank { + rank + power { + id + points + } + } + } + lastTournamentResult { + userRank + power + } + } + } +} \ No newline at end of file diff --git a/schema/operations/publicProfileGetCredentialsByLogin.gql b/schema/operations/publicProfileGetCredentialsByLogin.gql new file mode 100644 index 0000000..e364b5c --- /dev/null +++ b/schema/operations/publicProfileGetCredentialsByLogin.gql @@ -0,0 +1,11 @@ +query publicProfileGetCredentialsByLogin($login: String!) { + school21 { + getStudentByLogin(login: $login) { + studentId + userId + schoolId + isActive + isGraduate + } + } +} \ No newline at end of file diff --git a/schema/operations/publicProfileGetPersonalInfo.gql b/schema/operations/publicProfileGetPersonalInfo.gql new file mode 100644 index 0000000..fde4ec9 --- /dev/null +++ b/schema/operations/publicProfileGetPersonalInfo.gql @@ -0,0 +1,53 @@ +query publicProfileGetPersonalInfo($userId: UUID!, $studentId: UUID!, $login: String!, $schoolId: UUID!) { + school21 { + getAvatarByUserId(userId: $userId) + getStageGroupS21PublicProfile(studentId: $studentId) { + waveId + waveName + eduForm + } + getExperiencePublicProfile(userId: $userId) { + value + level { + levelCode + range { + leftBorder + rightBorder + } + } + cookiesCount + coinsCount + codeReviewPoints + } + getEmailbyUserId(userId: $userId) + getClassRoomByLogin(login: $login) { + id + number + floor + } + } + student { + getWorkstationByLogin(login: $login) { + workstationId + hostName + row + number + } + getFeedbackStatisticsAverageScore(studentId: $studentId) { + countFeedback + feedbackAverageScore { + categoryCode + categoryName + value + } + } + } + user { + getSchool(schoolId: $schoolId) { + id + fullName + shortName + address + } + } +} \ No newline at end of file diff --git a/schema/operations/publicProfileGetProjects.gql b/schema/operations/publicProfileGetProjects.gql new file mode 100644 index 0000000..e802462 --- /dev/null +++ b/schema/operations/publicProfileGetProjects.gql @@ -0,0 +1,17 @@ +query publicProfileGetProjects($studentId: UUID!, $stageGroupId: ID!) { + school21 { + getStudentProjectsForPublicProfileByStageGroup( + studentId: $studentId + stageGroupId: $stageGroupId + ) { + groupName + name + experience + finalPercentage + goalId + goalStatus + amountAnswers + amountReviewedAnswers + } + } +} \ No newline at end of file diff --git a/schema/operations/publicProfileGetSoftSkills.gql b/schema/operations/publicProfileGetSoftSkills.gql new file mode 100644 index 0000000..f43af63 --- /dev/null +++ b/schema/operations/publicProfileGetSoftSkills.gql @@ -0,0 +1,14 @@ +query publicProfileGetSoftSkills($studentId: UUID!) { + school21 { + getSoftSkillsByStudentId(studentId: $studentId) { + id + type + code + totalPower + hueSaturationLightness + } + getSoftSkillLimitByStudentId(studentId: $studentId) { + powerLimit + } + } +} \ No newline at end of file diff --git a/schema/operations/publicProfileGetStudentTraffic.gql b/schema/operations/publicProfileGetStudentTraffic.gql new file mode 100644 index 0000000..6d932b2 --- /dev/null +++ b/schema/operations/publicProfileGetStudentTraffic.gql @@ -0,0 +1,14 @@ +query publicProfileGetStudentTraffic($login: String!, $schoolID: UUID!, $date: Date!) { + student { + getStudentTraffic(login: $login, schoolID: $schoolID, date: $date) { + days { + date + periodOnCampus + periodAuthorizSDP + periodAuthorizIMac + } + endDate + startDate + } + } +} \ No newline at end of file diff --git a/schema/operations/publicProfileGetXpGraph.gql b/schema/operations/publicProfileGetXpGraph.gql new file mode 100644 index 0000000..998923f --- /dev/null +++ b/schema/operations/publicProfileGetXpGraph.gql @@ -0,0 +1,10 @@ +query publicProfileGetXpGraph($userId: UUID!) { + student { + getExperienceHistoryDate(userId: $userId) { + history { + awardDate + expValue + } + } + } +} \ No newline at end of file diff --git a/schema/operations/publicProfileLoadAverageLogtime.gql b/schema/operations/publicProfileLoadAverageLogtime.gql new file mode 100644 index 0000000..bb24356 --- /dev/null +++ b/schema/operations/publicProfileLoadAverageLogtime.gql @@ -0,0 +1,9 @@ +query publicProfileLoadAverageLogtime($login: String!, $schoolID: UUID!, $date: Date!) { + school21 { + loadAverageLogtime(login: $login, schoolID: $schoolID, date: $date) { + week + month + weekPerMonth + } + } +} \ No newline at end of file diff --git a/schema/operations/publicProfileLoadStageGroups.gql b/schema/operations/publicProfileLoadStageGroups.gql new file mode 100644 index 0000000..3e4c656 --- /dev/null +++ b/schema/operations/publicProfileLoadStageGroups.gql @@ -0,0 +1,17 @@ +query publicProfileLoadStageGroups($studentId: UUID!) { + school21 { + loadStudentStageGroups(studentId: $studentId) { + stageGroupStudentId + studentId + stageGroupS21 { + waveId + waveName + eduForm + active + } + safeSchool { + fullName + } + } + } +} \ No newline at end of file diff --git a/schema/operations/readUserNotifications.gql b/schema/operations/readUserNotifications.gql new file mode 100644 index 0000000..64d5b05 --- /dev/null +++ b/schema/operations/readUserNotifications.gql @@ -0,0 +1,5 @@ +mutation readUserNotifications($notificationIds: [ID!]!) { + student { + readNotifications(notificationIds: $notificationIds) + } +} \ No newline at end of file diff --git a/schema/operations/registerForExam.gql b/schema/operations/registerForExam.gql new file mode 100644 index 0000000..1bcbca1 --- /dev/null +++ b/schema/operations/registerForExam.gql @@ -0,0 +1,5 @@ +mutation registerForExam($goalId: ID!) { + sc21ProjectFlow { + registerForExam(goalId: $goalId) + } +} \ No newline at end of file diff --git a/schema/operations/registerToInternship.gql b/schema/operations/registerToInternship.gql new file mode 100644 index 0000000..083d511 --- /dev/null +++ b/schema/operations/registerToInternship.gql @@ -0,0 +1,5 @@ +mutation registerToInternship($goalId: ID!) { + sc21ProjectFlow { + registerForProject(goalId: $goalId) + } +} \ No newline at end of file diff --git a/schema/operations/registerToProject.gql b/schema/operations/registerToProject.gql new file mode 100644 index 0000000..85a78e4 --- /dev/null +++ b/schema/operations/registerToProject.gql @@ -0,0 +1,5 @@ +mutation registerToProject($goalId: ID!) { + sc21ProjectFlow { + registerForProject(goalId: $goalId) + } +} \ No newline at end of file diff --git a/schema/operations/registrationForTheCourse.gql b/schema/operations/registrationForTheCourse.gql new file mode 100644 index 0000000..2727685 --- /dev/null +++ b/schema/operations/registrationForTheCourse.gql @@ -0,0 +1,7 @@ +mutation registrationForTheCourse($localCourseId: ID!) { + course { + registrationForTheCourse(localCourseId: $localCourseId) { + finalPoint + } + } +} \ No newline at end of file diff --git a/schema/operations/rejectInvitationToTeam.gql b/schema/operations/rejectInvitationToTeam.gql new file mode 100644 index 0000000..2abc62e --- /dev/null +++ b/schema/operations/rejectInvitationToTeam.gql @@ -0,0 +1,5 @@ +mutation rejectInvitationToTeam($teamId: UUID!) { + student { + rejectInvitation(teamId: $teamId) + } +} \ No newline at end of file diff --git a/schema/operations/removeCodeReviewBooking.gql b/schema/operations/removeCodeReviewBooking.gql new file mode 100644 index 0000000..4659084 --- /dev/null +++ b/schema/operations/removeCodeReviewBooking.gql @@ -0,0 +1,7 @@ +mutation removeCodeReviewBooking($eventId: ID!) { + student { + removeBookingToCodeReview(eventId: $eventId) { + id + } + } +} \ No newline at end of file diff --git a/schema/operations/removeFromFavourites.gql b/schema/operations/removeFromFavourites.gql new file mode 100644 index 0000000..7be085b --- /dev/null +++ b/schema/operations/removeFromFavourites.gql @@ -0,0 +1,7 @@ +mutation removeFromFavourites($videoId: UUID!) { + mediateka { + removeBookmark(itemId: $videoId) { + status + } + } +} \ No newline at end of file diff --git a/schema/operations/removeP2P.gql b/schema/operations/removeP2P.gql new file mode 100644 index 0000000..f27afd0 --- /dev/null +++ b/schema/operations/removeP2P.gql @@ -0,0 +1,5 @@ +mutation removeP2P($bookingId: ID!) { + student { + removeBookingFromEventSlot(bookingId: $bookingId) + } +} \ No newline at end of file diff --git a/schema/operations/retryCourse.gql b/schema/operations/retryCourse.gql new file mode 100644 index 0000000..4628fde --- /dev/null +++ b/schema/operations/retryCourse.gql @@ -0,0 +1,5 @@ +mutation retryCourse($localCourseId: ID!) { + course { + retryCourse(localCourseId: $localCourseId) + } +} \ No newline at end of file diff --git a/schema/operations/retryCreatePrivateGitlabProject.gql b/schema/operations/retryCreatePrivateGitlabProject.gql new file mode 100644 index 0000000..d4b8e20 --- /dev/null +++ b/schema/operations/retryCreatePrivateGitlabProject.gql @@ -0,0 +1,5 @@ +mutation retryCreatePrivateGitlabProject($studentAnswerId: ID!) { + student { + retryCreatePrivateGitlabProject(studentAnswerId: $studentAnswerId) + } +} \ No newline at end of file diff --git a/schema/operations/retryInternship.gql b/schema/operations/retryInternship.gql new file mode 100644 index 0000000..0ed7b58 --- /dev/null +++ b/schema/operations/retryInternship.gql @@ -0,0 +1,5 @@ +mutation retryInternship($taskId: ID!) { + sc21ProjectFlow { + retryProject(taskId: $taskId) + } +} \ No newline at end of file diff --git a/schema/operations/retryProject.gql b/schema/operations/retryProject.gql new file mode 100644 index 0000000..df1e634 --- /dev/null +++ b/schema/operations/retryProject.gql @@ -0,0 +1,5 @@ +mutation retryProject($taskId: ID!) { + sc21ProjectFlow { + retryProject(taskId: $taskId) + } +} \ No newline at end of file diff --git a/schema/operations/saveFilledChecklist.gql b/schema/operations/saveFilledChecklist.gql new file mode 100644 index 0000000..978b8c5 --- /dev/null +++ b/schema/operations/saveFilledChecklist.gql @@ -0,0 +1,5 @@ +mutation saveFilledChecklist($filledChecklistInput: ChecklistFilledInput!) { + student { + completeP2pCheck(checklistFilledInput: $filledChecklistInput) + } +} \ No newline at end of file diff --git a/schema/operations/saveHonorRatings.gql b/schema/operations/saveHonorRatings.gql new file mode 100644 index 0000000..aed72fa --- /dev/null +++ b/schema/operations/saveHonorRatings.gql @@ -0,0 +1,7 @@ +mutation saveHonorRatings($studentHonorRatings: [StudentHonorRatingInput!]!) { + honorRating { + saveStudentHonorRatings(studentHonorRatings: $studentHonorRatings) { + studentHonorRatingId + } + } +} \ No newline at end of file diff --git a/schema/operations/saveNotificationUserSettings.gql b/schema/operations/saveNotificationUserSettings.gql new file mode 100644 index 0000000..5c3a954 --- /dev/null +++ b/schema/operations/saveNotificationUserSettings.gql @@ -0,0 +1,5 @@ +mutation saveNotificationUserSettings($settings: [NotificationUserSettingInput!]!) { + notificationConfiguration { + saveNotificationUserSettings(settings: $settings) + } +} \ No newline at end of file diff --git a/schema/operations/saveSolutionComment.gql b/schema/operations/saveSolutionComment.gql new file mode 100644 index 0000000..668269e --- /dev/null +++ b/schema/operations/saveSolutionComment.gql @@ -0,0 +1,12 @@ +fragment StudentAnswerComment on StudentAnswerComment { + studentAnswerId + comment +} + +mutation saveSolutionComment($taskId: ID!, $comment: String!) { + sc21StudentTaskCheck { + saveSolutionComment(taskId: $taskId, comment: $comment) { + ...StudentAnswerComment + } + } +} \ No newline at end of file diff --git a/schema/operations/saveStudentFeedbackResults.gql b/schema/operations/saveStudentFeedbackResults.gql new file mode 100644 index 0000000..5dfa533 --- /dev/null +++ b/schema/operations/saveStudentFeedbackResults.gql @@ -0,0 +1,8 @@ +mutation saveStudentFeedbackResults($studentFeedbackId: ID!, $studentFeedbackResults: [StudentFeedbackResultInput!]!) { + sc21StudentTaskCheck { + saveStudentFeedbackResults( + studentFeedbackId: $studentFeedbackId + studentFeedbackResults: $studentFeedbackResults + ) + } +} \ No newline at end of file diff --git a/schema/operations/sendDisbandRequest.gql b/schema/operations/sendDisbandRequest.gql new file mode 100644 index 0000000..cb2a578 --- /dev/null +++ b/schema/operations/sendDisbandRequest.gql @@ -0,0 +1,10 @@ +mutation sendDisbandRequest($teamId: UUID!, $comment: String!, $urlFileComment: String, $goalId: ID!) { + student { + sendTeamDisbandRequest( + teamId: $teamId + comment: $comment + urlFileComment: $urlFileComment + goalId: $goalId + ) + } +} \ No newline at end of file diff --git a/schema/operations/sendInvitation.gql b/schema/operations/sendInvitation.gql new file mode 100644 index 0000000..9cc97cc --- /dev/null +++ b/schema/operations/sendInvitation.gql @@ -0,0 +1,41 @@ +fragment CurrentUserExperience on UserExperience { + id + cookiesCount + codeReviewPoints + coinsCount + level { + id + range { + id + levelCode + } + } +} + +fragment AvailableStudentForTeam on Student { + id + user { + id + login + avatarUrl + userExperience { + ...CurrentUserExperience + } + } +} + +fragment StudentInvitationInfo on StudentInvitationInfo { + student { + ...AvailableStudentForTeam + } + invitationStatus + schoolShortName +} + +mutation sendInvitation($teamId: UUID!, $userId: ID!) { + student { + sendInvitation(teamId: $teamId, userId: $userId) { + ...StudentInvitationInfo + } + } +} \ No newline at end of file diff --git a/schema/operations/startProject.gql b/schema/operations/startProject.gql new file mode 100644 index 0000000..b7d2d3c --- /dev/null +++ b/schema/operations/startProject.gql @@ -0,0 +1,5 @@ +mutation startProject($goalId: ID!) { + sc21ProjectFlow { + startProject(goalId: $goalId) + } +} \ No newline at end of file diff --git a/schema/operations/subscribeToEvent.gql b/schema/operations/subscribeToEvent.gql new file mode 100644 index 0000000..645f7dd --- /dev/null +++ b/schema/operations/subscribeToEvent.gql @@ -0,0 +1,109 @@ +fragment Penalty on Penalty { + comment + id + duration + status + startTime + createTime + penaltySlot { + currentStudentsCount + description + duration + startTime + id + endTime + } + reasonId +} + +fragment UpcomingEvent on CalendarEvent { + id + start + end + bookings { + id + task { + id + goalName + } + } + eventSlots { + id + eventId + type + start + end + } + maxStudentCount + location + ipRange + eventType + eventCode + description + externalId + currentStudentsCount + exam { + examId + eventId + beginDate + endDate + location + ip + maxStudentCount + isVisible + name + goalId + isWaitListActive + isInWaitList + currentStudentsCount + createDate + updateDate + schoolId + stopRegisterDate + isRegistered + goalName + eventType + registrationAccessStatus + } + studentCodeReview { + studentGoalId + } + activity { + activityEventId + eventId + beginDate + endDate + location + description + maxStudentCount + isVisible + name + isWaitListActive + isInWaitList + currentStudentsCount + createDate + updateDate + schoolId + stopRegisterDate + isRegistered + activityType + eventType + isMandatory + status + organizers { + id + login + } + } + penalty { + ...Penalty + } +} + +mutation subscribeToEvent($eventId: ID!) { + student { + subscribeToEvent(eventId: $eventId) { + ...UpcomingEvent + } + } +} \ No newline at end of file diff --git a/schema/operations/switchUserTheme.gql b/schema/operations/switchUserTheme.gql new file mode 100644 index 0000000..9c980fe --- /dev/null +++ b/schema/operations/switchUserTheme.gql @@ -0,0 +1,5 @@ +mutation switchUserTheme($userId: UUID!, $isDarkThemeEnabled: Boolean!) { + user { + switchUserTheme(userId: $userId, isDarkThemeEnabled: $isDarkThemeEnabled) + } +} \ No newline at end of file diff --git a/schema/operations/tryAgainExamModule.gql b/schema/operations/tryAgainExamModule.gql new file mode 100644 index 0000000..5c4746f --- /dev/null +++ b/schema/operations/tryAgainExamModule.gql @@ -0,0 +1,5 @@ +mutation tryAgainExamModule($goalId: ID!) { + sc21ProjectFlow { + retryExam(goalId: $goalId) + } +} \ No newline at end of file diff --git a/schema/operations/unsubscribeFromAgendaEvent.gql b/schema/operations/unsubscribeFromAgendaEvent.gql new file mode 100644 index 0000000..b6885bb --- /dev/null +++ b/schema/operations/unsubscribeFromAgendaEvent.gql @@ -0,0 +1,7 @@ +mutation unsubscribeFromAgendaEvent($eventId: ID!) { + student { + unsubscribeFromEvent(eventId: $eventId) { + id + } + } +} \ No newline at end of file diff --git a/schema/operations/unsubscribeFromEvent.gql b/schema/operations/unsubscribeFromEvent.gql new file mode 100644 index 0000000..329570d --- /dev/null +++ b/schema/operations/unsubscribeFromEvent.gql @@ -0,0 +1,109 @@ +fragment Penalty on Penalty { + comment + id + duration + status + startTime + createTime + penaltySlot { + currentStudentsCount + description + duration + startTime + id + endTime + } + reasonId +} + +fragment UpcomingEvent on CalendarEvent { + id + start + end + bookings { + id + task { + id + goalName + } + } + eventSlots { + id + eventId + type + start + end + } + maxStudentCount + location + ipRange + eventType + eventCode + description + externalId + currentStudentsCount + exam { + examId + eventId + beginDate + endDate + location + ip + maxStudentCount + isVisible + name + goalId + isWaitListActive + isInWaitList + currentStudentsCount + createDate + updateDate + schoolId + stopRegisterDate + isRegistered + goalName + eventType + registrationAccessStatus + } + studentCodeReview { + studentGoalId + } + activity { + activityEventId + eventId + beginDate + endDate + location + description + maxStudentCount + isVisible + name + isWaitListActive + isInWaitList + currentStudentsCount + createDate + updateDate + schoolId + stopRegisterDate + isRegistered + activityType + eventType + isMandatory + status + organizers { + id + login + } + } + penalty { + ...Penalty + } +} + +mutation unsubscribeFromEvent($eventId: ID!) { + student { + unsubscribeFromEvent(eventId: $eventId) { + ...UpcomingEvent + } + } +} \ No newline at end of file diff --git a/schema/operations/updateP2POnlineType.gql b/schema/operations/updateP2POnlineType.gql new file mode 100644 index 0000000..b6edec2 --- /dev/null +++ b/schema/operations/updateP2POnlineType.gql @@ -0,0 +1,7 @@ +mutation updateP2POnlineType($bookingId: ID!) { + sc21StudentTaskCheck { + enableOnlineP2pCheck(bookingId: $bookingId) { + id + } + } +} \ No newline at end of file diff --git a/schema/operations/updateParticipantEvent.gql b/schema/operations/updateParticipantEvent.gql new file mode 100644 index 0000000..9e73c61 --- /dev/null +++ b/schema/operations/updateParticipantEvent.gql @@ -0,0 +1,10 @@ +mutation updateParticipantEvent($activityEventId: ID!, $input: ActivityEventByStudentInputModel!) { + event { + updateParticipantEvent(activityEventId: $activityEventId, input: $input) { + activityEventId + eventId + name + eventType + } + } +} \ No newline at end of file diff --git a/schema/operations/userGetTheme.gql b/schema/operations/userGetTheme.gql new file mode 100644 index 0000000..86cfc7b --- /dev/null +++ b/schema/operations/userGetTheme.gql @@ -0,0 +1,7 @@ +query userGetTheme($userId: UUID!) { + user { + getUserViewSettings(userId: $userId) { + isDarkThemeEnabled + } + } +} \ No newline at end of file diff --git a/schema/operations/userRoleLoaderGetRoles.gql b/schema/operations/userRoleLoaderGetRoles.gql new file mode 100644 index 0000000..3d1d1e6 --- /dev/null +++ b/schema/operations/userRoleLoaderGetRoles.gql @@ -0,0 +1,37 @@ +query userRoleLoaderGetRoles { + user { + getCurrentUser { + functionalRoles { + code + } + id + studentRoles { + id + school { + id + shortName + organizationType + } + status + } + userSchoolPermissions { + schoolId + permissions + } + systemAdminRole { + id + } + businessAdminRolesV2 { + id + school { + id + organizationType + } + orgUnitId + } + } + getCurrentUserSchoolRoles { + schoolId + } + } +} \ No newline at end of file diff --git a/schema/operations/widgetAchievementsGetLastBadges.gql b/schema/operations/widgetAchievementsGetLastBadges.gql new file mode 100644 index 0000000..dbd7f38 --- /dev/null +++ b/schema/operations/widgetAchievementsGetLastBadges.gql @@ -0,0 +1,17 @@ +query widgetAchievementsGetLastBadges($limit: Int) { + student { + getLastBadges(limit: $limit) { + id + points + badge { + name + avatarUrl + } + award { + awardBounties { + awardLevelId + } + } + } + } +} \ No newline at end of file diff --git a/schema/schema.gql b/schema/schema.gql new file mode 100644 index 0000000..48e2d42 --- /dev/null +++ b/schema/schema.gql @@ -0,0 +1,60168 @@ +"""Значение характеристик: Урон, Здоровье и т.д.""" +type AbilityPower { + """user_ability_id || equipment_ability__id""" + id: ID! + + """Наименование хар-ки""" + name: String! + + """Относительная ссылка на изображение в файловый сервис""" + imageUrl: String! + + """Значение""" + power: Int! +} + +"""""" +type AcademicYear { + """""" + id: ID! + + """""" + name: String! + + """""" + startDate: Date! + + """""" + endDate: Date! +} + +"""Информация о Предметах на данный Учебный Год""" +type AcademicYearSubjects { + """Учебный Год""" + academicYear: AcademicYear! + + """Предметы на данный Учебный Год""" + subjects: [Subject!]! +} + +"""""" +type AccNote { + """Идентификатор заметки""" + noteId: ID! + + """Текст заметки""" + text: String! + + """Время создания заметки""" + createTime: DateTime! + + """Время обновления заметки""" + updateTime: DateTime! + + """Время планирования заметки""" + scheduledTime: DateTime! + + """Признак завершен ли пункт""" + completed: Boolean! + + """Идентификатор пользователя которому принадлежит заметка""" + userId: UUID! +} + +"""""" +input AccNoteInput { + """Идентификатор заметки""" + noteId: ID + + """Текст заметки""" + text: String + + """Время планирования заметки""" + scheduledTime: DateTime + + """Признак завершен ли пункт""" + completed: Boolean + + """Идентификатор пользователя которому принадлежит заметка""" + userId: UUID! +} + +"""""" +type AccOnlineCalendarEvent { + """ШЦП календарь ивент""" + onlineCalendarEvent: OnlineCalendarEvent! + + """Проектный поток""" + projectFlowId: UUID +} + +"""""" +input AccOnlineCalendarEventInput { + """ШЦП календарь ивент""" + calendarEventInput: CalendarEventInput! + + """Идентификатор пользовательной группы организатора события""" + organizerGroupId: UUID + + """ + Признак необходимости выгрузить для пользовательского календаря событие + """ + exportICalendar: Boolean + + """Проектный поток""" + projectFlowId: UUID +} + +"""""" +type AccUserInfoModel { + """""" + resumeId: UUID + + """""" + isCapitan: Boolean! + + """""" + teamId: UUID + + """""" + projectId: UUID + + """""" + userType: String + + """""" + stageGroupId: Int! + + """""" + stageGroupName: String! + + """""" + isOldStageGroup: Boolean! +} + +"""""" +type AcceleratorJoinCheckResult { + """""" + isJoined: Boolean! + + """""" + userTypeId: AcceleratorUserType! +} + +"""Статус участника акселератора""" +enum AcceleratorMemberStatus { + """""" + INDIVIDUAL + + """""" + WINNER + + """""" + LOSER +} + +"""Метрика Акселератора""" +enum AcceleratorMetric { + """""" + CSAT + + """""" + NPS +} + +"""Этапы Акселератора""" +enum AcceleratorMilestone { + """""" + FIRST + + """""" + SECOND + + """""" + THIRD +} + +"""""" +type AcceleratorMutations { + """ + Внутренняя регистрация + Добавление пользователя в студенческий акселератор с ролью 'Ученик акселератора' + """ + addUserToAcceleratorAsLearner: Boolean! @deprecated(reason: "Неактуально, используйте joinToAccelerator") + + """ + Добавление пользователя в АУ 0 этапа или АС 0 этапа в зависимости от типа пользователя + """ + joinToAccelerator(userId: UUID, userTypeId: AcceleratorUserType!, referralCode: UUID, referralType: String): String! + + """ + Работа с проектами + Создание проекта + """ + createProject(project: ProjectInput!): Project! + + """Изменение проекта""" + updateProject(id: UUID!, project: ProjectInput!): Project! + + """ + Обновления файлов к проекту. Если не передано значение поля fileURL, + то удаляет текущий активный файл. + """ + updateProjectFiles(projectFileInput: ProjectFileInput): UUID + + """Удаление файлов по id, приложенных к проекту""" + removeProjectFiles(id: [UUID!]!): String! + + """ + Работа с заявками + Подача пользователем заявки на участие в проекте + """ + joinToProject(teamId: UUID!, vacancyId: UUID, requestReason: String): JoinTeamRequest! + + """Одобрение капитаном заявки на участие в проекте""" + successJoinToProject(requestId: UUID!): JoinTeamRequest! + + """Отклонение капитаном заявки на участие в проекте""" + failJoinToProject(requestId: UUID!, reasonId: UUID, reasonText: String): JoinTeamRequest! + + """Отзыв заявки пользователем""" + rejectRequestToProject(requestId: UUID!, reasonId: UUID, reasonText: String): JoinTeamRequest! + + """ + Помечание заявки, как "прочитанной" + """ + markRequestAsRead(requestId: UUID!): JoinTeamRequest! @deprecated(reason: "Под удаление. Использовать saveAcceleratorProfile") + + """""" + setInfo(userId: UUID!, gender: Gender, regionId: UUID, countryId: UUID, userAbout: String): AcceleratorProfile + + """Изменение дополнительных данных""" + saveAcceleratorProfile(acceleratorProfileInput: AcceleratorProfileInput!): Boolean! @deprecated(reason: "Использовать saveAccCalendarEvent") + + """""" + saveCalendarEvent(onlineCalendarEventInput: OnlineCalendarEventInput!): OnlineCalendarEvent! + + """Создание/изменение событий""" + saveAccCalendarEvent(accOnlineCalendarEventInput: AccOnlineCalendarEventInput!): AccOnlineCalendarEvent! + + """Удаление события календаря""" + removeCalendarEvent(eventId: UUID!): String! + + """Присоединение к событию""" + joinToCalendarEvent(eventId: UUID!, participantGroupId: UUID!): CalendarEventParticipant! + + """Отклонение события для участников, которые записались на него""" + rejectCalendarEvent(eventId: UUID!, participantGroupId: UUID!): CalendarEventParticipant! + + """ + Повторная нотификация / нотификация при изменении email законного представителя + """ + updateParentEmail(newParentEmail: String!): String! + + """ + Перевод пользователя в класс "Акселератор" + """ + transferUserToAcceleratorStageGroup: String! + + """ + Перевод студентов из школы в Акселератор Студента в школу Акселератора Ученика + Не предназначен для вызова с фронта! + """ + transferAccStudentToAccLearnerSchool(userEmail: String!, birthdate: String): String! + + """ + Блокировка пользователя в одной из школ Акселератора + Не предназначен для вызова с фронта! + """ + blockStudentInAcceleratorSchool(userEmail: String!, accSchoolId: UUID!): String! + + """ + Блокировка пользователей - студентов Акселератора - по итогам оценки проектов + """ + blockAcceleratorStudentsByProjectAssessment: String! @deprecated(reason: "Использовать studentTransferToSecondStage") + + """""" + addStudentToSecondAcceleratorSchool: String! + + """ + Перевод пользователей - студентов Акселератора - на второй этап по итогам оценки проектов + """ + studentTransferToSecondStage(projectFlowId: UUID, secondSchoolId: UUID!, secondStageId: Int!): String! + + """добавление нотификацию в очеред для отправки""" + addNotificationItemToQueue(notificationItem: AcceleratorNotificationItemInput!): String! + + """Сохранение оценки по итоговому заданию проектной деятельности""" + saveAcceleratorProjectAssessment(projectAssessmentInput: ProjectAssessmentInput!): String! + + """ + Метрики + Сохранение (создание/обновление) опроса + """ + saveAcceleratorSurvey(acceleratorSurveyInput: AcceleratorSurveyInput!): String! + + """Удаление опроса""" + deleteAcceleratorSurvey(surveyId: UUID!): String! + + """Сохранение ответа на опрос""" + saveAcceleratorSurveyUserAnswer(userSurveyAnswerInput: UserSurveyAnswerInput!): String! + + """ + Рассылки + Сохранение рассылки Акселератора и запуск email нотификации + """ + saveNotification(acceleratorNotificationInput: AcceleratorNotificationInput!): String! + + """Отмена рассылки Акселератора""" + cancelNotification(notificationId: UUID!): String! + + """ + Проектные потоки + Создание проектного потока + """ + saveOrUpdateProjectFlow(projectFlowSaveOrUpdate: ProjectFlowSaveOrUpdate!): String! + + """Удаление проектного потока""" + deleteProjectFlowById(projectFlowId: UUID!): String! + + """Сохранение вакансии проекта""" + saveOrUpdateProjectRole(projectRoleInput: ProjectRoleInput): String! + + """Удаление вакансии проекта""" + deleteProjectRole(vacancyId: UUID!): String! + + """""" + updateProjectAvailableForRequests(projectId: UUID!, availableForRequest: Boolean!): String! + + """Создание заметок""" + deleteAccNotesByIds( + """Массив с идентификатором для удаления заметок""" + noteIds: [ID!]! + ): [AccNote!]! + + """Создание заметок""" + updateAccNoteCompleteness( + """""" + noteId: ID! + + """Обновление поля completed""" + isCompleted: Boolean! + ): [AccNote]! + + """""" + addOrUpdateAccNotes( + """Входящая модель данных для добавления или апдейта заметки""" + noteInputModels: [AccNoteInput!]! + ): Int + + """ + Резюме + Создание/обновление резюме + """ + createOrUpdateResume(resumeInput: ResumeInput!): String! + + """Смена статуса резюме""" + changeStatusResume(status: String!): String! + + """Удаление резюме""" + deleteResume: String! + + """Приглашение в команду""" + sendTeamInvite(inviteRequestInput: InviteRequestInput!): UUID! + + """Отозвать приглашение""" + revokeTeamInvite(inviteId: UUID!): String! + + """Принять приглашение пользователем""" + acceptTeamInvite(inviteId: UUID!): String! + + """Отклонить приглашение пользователем""" + rejectTeamInvite(inviteId: UUID!): String! + + """Изменение статуса заявки""" + changeRequestStatus(requestId: UUID!, status: String!): String! + + """Утверждение заявки""" + approveRequests(agreementType: String!, requestIds: [UUID]!): String! + + """""" + generateRegLink(stageGroupId: Int!): String! + + """Генерация реферальной ссылки""" + generateRegReferralLink(referralTypeId: String!): String! + + """Обновление баллов""" + refreshNtoScore: DefaultResponse! + + """Отправка баллов""" + sendNtoScore(userIds: [UUID!]!, activity: String!): NtoSendScoreResponse! +} + +"""Входная модель фильтра по рассылкам Акселератора""" +input AcceleratorNotificationFilter { + """Поиск по теме рассылки""" + searchText: String + + """Paging""" + page: PagingInput +} + +"""Входная модель для сохранения данных по рассылке Акселератора""" +input AcceleratorNotificationInput { + """Тип группы получателей рассылки""" + receiversType: AcceleratorNotificationReceiverGroupType! + + """Список ID групп получателей рассылки""" + receiversIds: [String!]! + + """Тема рассылки""" + subject: String! + + """Тело рассылки""" + body: String! + + """Header рассылки""" + header: String + + """Footer рассылки""" + footer: String +} + +"""""" +input AcceleratorNotificationItemInput { + """""" + allOfOrgUnit: Boolean! + + """""" + projects: [UUID!]! + + """""" + subject: String! + + """""" + messageBody: String! + + """""" + projectFlowId: UUID +} + +"""""" +type AcceleratorNotificationItemModel { + """""" + createDateTime: DateTime! + + """""" + subject: String! + + """""" + status: String! + + """""" + count: Int! +} + +"""Модель рассылки Акселератора""" +type AcceleratorNotificationModel { + """Идентификатор рассылки""" + id: UUID! + + """Общее кол-во email для отправки в рассылке""" + receiversCount: Int + + """Количество отправленных нотификаций по рассылке""" + sentCount: Int + + """Количество ошибок по рассылке""" + errorCount: Int + + """Тип группы получателей рассылки""" + receiversType: AcceleratorNotificationReceiverGroupType! + + """Список групп получателей рассылки""" + receivers: [AcceleratorNotificationReceiverGroup!]! + + """Тема рассылки""" + subject: String! + + """Тело рассылки""" + body: String! + + """Статус рассылки""" + status: AcceleratorNotificationStatus! +} + +"""Модель группы получателей рассылки Акселератора""" +type AcceleratorNotificationReceiverGroup { + """ID группы получателей""" + id: String! + + """Наименование группы получателей""" + name: String! +} + +"""Тип групп получателей рассылки Акселератора""" +enum AcceleratorNotificationReceiverGroupType { + """""" + STAGE_GROUPS + + """""" + PROJECT_TEAMS +} + +"""Сокращенная модель рассылки Акселератора""" +type AcceleratorNotificationShortModel { + """Идентификатор рассылки""" + id: UUID! + + """Дата создания рассылки""" + createTs: DateTime! + + """Тема рассылки""" + subject: String! + + """Имя отправителя""" + creatorName: String! + + """Статус рассылки""" + status: AcceleratorNotificationStatus! +} + +"""Тип статуса рассылки Акселератора""" +enum AcceleratorNotificationStatus { + """""" + CREATED + + """""" + QUEUED + + """""" + SENDING + + """""" + FINISHED + + """""" + ERROR + + """""" + CANCELLED +} + +"""""" +type AcceleratorProfile { + """""" + id: UUID! + + """""" + firstName: String + + """""" + lastName: String + + """""" + middleName: String + + """""" + birthdayDate: DateTime + + """""" + mobilePhone: String + + """""" + email: String + + """""" + emailConfirmed: String + + """""" + avatarUrl: String + + """""" + login: String + + """""" + active: Boolean + + """""" + gender: Gender + + """""" + region: Region + + """""" + country: Country + + """""" + userAbout: String + + """""" + favoriteSubjects: [FavoriteSubject!]! + + """""" + favoriteSportKinds: [String!]! + + """""" + favoriteTaskFormats: [String!]! + + """""" + favoriteWorkForms: [String!]! + + """""" + favoriteBooks: String + + """""" + favoriteFilms: String + + """""" + favoriteArtists: String + + """""" + interestsHobbies: String + + """""" + wantToBecome: String + + """""" + legalRepresentativeEmail: String + + """""" + userNameSchoolAcceleratorAccess: String + + """""" + userClassName: String + + """""" + userPositionOrganizations: [UserPositionOrganization!]! + + """""" + visibilityLevel: ProfileVisibilityLevel + + """""" + block: Boolean! +} + +"""""" +input AcceleratorProfileInput { + """""" + id: UUID! + + """""" + firstName: String + + """""" + lastName: String + + """""" + middleName: String + + """""" + birthdayDate: DateTime + + """""" + mobilePhone: String + + """""" + email: String + + """""" + emailConfirmed: String + + """""" + avatarUrl: String + + """""" + login: String + + """""" + active: Boolean + + """""" + gender: Gender + + """""" + regionId: UUID + + """""" + countryId: UUID + + """""" + userAbout: String + + """""" + favoriteSubjects: [Int!]! + + """""" + favoriteSportKinds: [String!]! + + """""" + favoriteTaskFormats: [String!]! + + """""" + favoriteWorkForms: [String!]! + + """""" + favoriteBooks: String + + """""" + favoriteFilms: String + + """""" + favoriteArtists: String + + """""" + interestsHobbies: String + + """""" + wantToBecome: String + + """""" + legalRepresentativeEmail: String + + """""" + userNameSchoolAcceleratorAccess: String + + """""" + userClassName: String + + """""" + userPositionOrganizations: [UserPositionOrganizationInput!]! + + """""" + visibilityLevel: ProfileVisibilityLevel + + """""" + accVocabularyEducationOrganization: [UserPositionOrganizationInput] +} + +"""Статус прохождения проекта""" +enum AcceleratorProjectGrade { + """""" + SUCCESS + + """""" + FAIL + + """""" + UNDEFINED +} + +"""""" +type AcceleratorQueries { + """ + Конфигурация + Получение ИД школы 'Акселератор Ученика' + """ + getAcceleratorLearnerSchoolId: UUID + + """Получение ИД школы 'Акселератор Студента'""" + getAcceleratorStudentSchoolId: UUID + + """Получение флага, что набор в 'Акселератор Ученика' открыт""" + isAcceleratorLearnerSchoolEnrollmentEnabled: Boolean! + + """Получение флага, что набор в 'Акселератор Студента' открыт""" + isAcceleratorStudentSchoolEnrollmentEnabled: Boolean! + + """ + Получение количества пользователей, которые могут ещё быть зарегистрированы + в Акселераторе Студента до достижения лимита (<=0 - лимит исчерпан) + """ + getAcceleratorStudentLimitRemains: Int! + + """Получение значения фиче-флага проектной деятельности""" + isProjectActivityEnabled: Boolean! + + """Получение даты начала второго этапа Акселератора Студента""" + getAcceleratorStudentSecondMilestoneStartDate: DateTime + + """Получение даты начала второго этапа Акселератора Ученика""" + getAcceleratorLearnerSecondMilestoneStartDate: DateTime + + """ + Получение даты блокировки возможности сменить проект Акселератора Студента + """ + getAcceleratorStudentBlockChangingProjectDate: DateTime + + """ + Получение даты блокировки возможности сменить проект Акселератора Ученика + """ + getAcceleratorLearnerBlockChangingProjectDate: DateTime + + """Получение идентификатора школы Акселератора Студента второго этапа""" + getAcceleratorStudentSecondStageSchoolId: UUID + + """Получение идентификатора школы Акселератора Ученика второго этапа""" + getAcceleratorLearnerSecondStageSchoolId: UUID + + """Получение идентификатора школы Акселератора Студента нулевого этапа""" + getAcceleratorStudentZeroStageSchoolId: UUID + + """Получение идентификатора школы Акселератора Ученика нулевого этапа""" + getAcceleratorLearnerZeroStageSchoolId: UUID + + """Получение списка классов в школе в текущем учебном году""" + getAllStageGroups(schoolId: UUID): [StageGroup!]! + + """ + Получение списка классов в школе в текущем учебном году для email рассылки + """ + getAllStageGroupsForEmailNotification(schoolId: UUID): [StageGroup!]! + + """ + Внутренняя регистрация + Проверка находится ли пользователь в текущем потоке Акселератора + """ + isUserAlreadyJoinedAccelerator(userId: UUID): AcceleratorJoinCheckResult! + + """ + Справочники + Получение всех заказчиков + """ + getAllCustomers: [Customer!]! + + """Получение заказчика по id""" + getCustomerById(id: UUID!): Customer + + """Получение всех заказчиков""" + getAllTechnologies: [Technology!]! + + """Получение заказчика по id""" + getTechnologyById(id: UUID!): Technology + + """Получение всех заказчиков""" + getAllBranches: [Branch!]! + + """Получение заказчика по id""" + getBranchById(id: UUID!): Branch + + """ + Проекты + Получение списка всех проектов в школе + """ + getAllProjects(orgUnitId: UUID): [ProjectCard!]! + + """Получение проекта по фильтрам""" + getProjectsByFilters(projectFilter: ProjectFilterInput!, page: PagingInput): [ProjectCard!]! + + """Получение проекта по фильтрам""" + getProjectsByUserStageFilters(projectFilter: ProjectFilterInput!, page: PagingInput): [ProjectCard!]! + + """Получение проекта по ID""" + getProjectById(id: UUID!): Project! + + """Получение текщуего проекта текущего пользователя""" + getCurrentUserProject: Project + + """Получение списка всех проектов в школе для email рассылки""" + getAllProjectsForEmailNotification(orgUnitId: UUID): [ProjectCard!]! + + """ + Работа с заявками + Получение заявки на участие в проекте по id + """ + getRequestById(requestId: UUID!): JoinTeamRequest + + """Получение всех заявок пользователя""" + getRequestsByUser(userId: UUID!): [JoinTeamRequest!]! + + """Получение всех заявок в команду""" + getRequestsByTeam(teamId: UUID!): [JoinTeamRequest!]! + + """ + Получение кандидата в капитаны, при выходе из команды текущего капитана + """ + getNextCaptainCandidate(teamId: UUID!): TeamMember + + """ + Профиль УА + Получение данных профиля + """ + getProfileById(userId: UUID!): AcceleratorProfile + + """Проверка заполненности профиля""" + checkProfile(userId: UUID!): [String!]! + + """Получение списка организаций для заполнения профиля""" + loadOrganizations(textSearch: String): [ShortOrganizationModel!]! + + """ + Получение справочных данных из acc-report сервиса Акселератора + Получение списка образовательных организаций + """ + loadEducationalOrganizations(filter: EducationalOrganizationFilter!): [ShortOrganizationModel!]! + + """Получение списка регионов""" + loadRegions(searchText: String): [Region!]! + + """Получение списка должностей""" + loadPositions: [Position!]! + + """ + Календарь событий + Получение + """ + getCalendersScheduleTasksByUserId(userId: UUID!, startTime: DateTime, endTime: DateTime): [ScheduledStudentTask!]! + + """Получение списка событий по типу""" + getCalendarEventsByType(eventTypeId: Int!): [OnlineCalendarEvent!]! + + """Получение групп участников события""" + getParticipantGroupsByEvent(eventId: UUID!): [Group!]! + + """Получение событий по группе участника""" + getCalendarEventsByParticipantGroup(groupId: UUID!): [OnlineCalendarEvent!]! + + """Получение событий по типу и группе участника""" + getCalendarEventsByTypeAndPartGroup(eventTypeId: Int!, groupId: UUID!): [OnlineCalendarEvent!]! + + """Получение событий по типу, группе и статусу участника""" + getCalendarEventsByTypeAndPartGroupAndStatus(eventTypeId: Int!, groupId: UUID!, status: String): [OnlineCalendarEvent!]! + + """ + Получение типов событий, доступных для создания пользователем, в соответствии с его функциональными ролями + """ + getAvailableEventTypesByUserId(userId: UUID!, schoolId: UUID): [CalendarEventType!]! + + """ + Получение типов пользовательских групп, для которых можно создавать события выранных типов + """ + getAvailableGroupTypesByEventTypeIds(eventTypeIds: [Int!]!): [GroupType!]! @deprecated(reason: "Использовать findAccCalendarEventsByFilter") + + """""" + findCalendarEventsByFilter(filter: CalendarEventFilterInput!, page: PagingInput): [OnlineCalendarEvent!]! + + """Получение списка событий по фильтру""" + findAccCalendarEventsByFilter(filter: CalendarEventFilterInput!, page: PagingInput): [AccOnlineCalendarEvent!]! + + """Получение всех типов событий календаря""" + getAllCalendarEventTypes: [CalendarEventType!]! + + """ + Работа с группами пользователей + Получение групп, в которые входит пользователь, в том числе транзитивно + """ + getGroupsByUserId(userId: UUID!, groupTypeId: Int): [Group!]! + + """ + Получение всех групп, в которые входит пользователь, в том числе транзитивно + """ + getGroupsByUserIdWithGroupTypes(userId: UUID!, groupTypeIds: [Int!]!): [Group!]! + + """ + Закрытие первого этапа + Получение данных для построения интерфейса с отчетами с фильтрами + """ + loadMilestoneReport(filter: MilestoneReportFilter!, page: PagingInput, sort: SortingField): [MilestoneReport!]! + + """Получение файла Excel с отчетом в формате Base64""" + exportMilestoneReportToXLS(filter: MilestoneReportFilter!): ReportExcelFile! + + """Получение этапа по идентификатору образовательного учреждения""" + getMilestoneByOrgUnitId(schoolId: UUID): AcceleratorMilestone! + + """получить список нотификаций в очереди""" + loadListNotificationItems: [AcceleratorNotificationItemModel!]! + + """получить статус участника акселератора""" + getAcceleratorMemberStatus(userId: UUID, schoolId: UUID): AcceleratorMemberStatus! + + """ + Метрики + Получение списка опросов с данными по метрикам + """ + loadMetrics(endDate: DateTime!, metricId: AcceleratorMetric!, page: PagingInput, sort: [SortingField!]): [Survey!]! + + """Получение списка активных опросов пользователя без ответов""" + loadRunningSurveysWithoutAnswer: [ActiveSurveyWithoutAnswer!]! + + """Получение списка опросов с данными по метрикам""" + exportMetricReportToXLS(endDate: DateTime!, metricId: AcceleratorMetric!): ReportExcelFile! + + """ + Рассылки + Получение списка рассылок в школе + """ + getAllNotifications(orgUnitId: UUID, filter: AcceleratorNotificationFilter): [AcceleratorNotificationShortModel!]! + + """Получение подробной информации по рассылке""" + getNotificationById(id: UUID!): AcceleratorNotificationModel! + + """ + Получение количества получателей email-рассылки для данных групп пользоватлей + """ + notificationReceiversCount( + """Тип группы получателей рассылки""" + receiversType: AcceleratorNotificationReceiverGroupType! + + """Список ID групп получателей рассылки""" + receiversIds: [String!]! + ): Int! + + """ + Реферальная программа + Получение списка зарегистрированных по реферальной ссылке для Участника + """ + getAllReferralsForUser(referralType: String): [ReferralUser!]! + + """зарегистрированных по реферальной ссылке""" + getAllReferralsForReferrerForConfigurator(referrerUserId: UUID!, referralType: String, page: PagingInput!): [ReferralConfigurator!]! + + """Получение списка реферреров для Конфигуратора""" + getAllReferrersForConfigurator(referralType: String, page: PagingInput!): [ReferrerConfigurator!]! + + """Получение отчета по рефералам""" + exportReferralReportToXLS: ReportExcelFile! + + """ + Проектные потоки + Получения списка проектных потоков + """ + getAllProjectFlowsWithPaging(page: PagingInput!): [ProjectFlow!]! + + """Получение проектного потока""" + getProjectFlowById(projectFlowId: UUID!): ProjectFlowWithStageGroups! + + """Получение проектного потока пользователя""" + getProjectFlowByUserId(userId: UUID): ProjectFlow + + """Получения списка классов проектного потока""" + getProjectFlowStageGroups(projectFlowId: UUID): [ProjectFlowStageGroup!]! + + """ + Получения софт-флага управления включением функционала проектной деятельности на фронте. + """ + isProjectFlowActive: Boolean! + + """ + Вакансии проекта + Получение вакансии по id вакансии + """ + getProjectRoleByVacancyId(vacancyId: UUID!): ProjectRole! + + """Получение вакансий проекта по id проекта""" + getProjectRolesByProjectId(projectId: UUID!, isOpen: Boolean): [ProjectRole!]! + + """Получение всех ролей из справочника""" + getAllProjectRolesFromDirectory: [ProjectRoleFromDirectory!]! + + """ + Получение статуса разрешения отправки запросов на вступление в группу проекта. + """ + isProjectAvailableForRequest(projectId: UUID!): Boolean! + + """Получение вакансий проекта по id проекта""" + getProjectVacanciesForCapitan(projectId: UUID!): [ProjectRoleForCapitan!]! + + """ + Метод возвращает дату последней активности капитана по проекту и команде проекта. + """ + getLastCapitanActivity(projectId: UUID!): Date! + + """Получение списка школ акселератора""" + getAcceleratorSchools: [AcceleratorSchool!]! + + """ + Метод возвращает количество проектов и количества Участников Акселератора, переводимых на 2 этап + """ + getCountsToSecondStageTransfer(projectFlowId: UUID, secondSchoolId: UUID!, secondStageId: Int!): StudentsManagement! + + """""" + getStageGroupForMoving: StageGroupType! + + """""" + getAllStageGroupsForMoving: [StageGroupType!]! + + """Метод возвращает должна ли отображаться только главная страница""" + isJuniorLanding: Boolean! + + """Отчет о регистрации""" + exportRegistrationReportToXLS(beginDate: String!, endDate: String): ReportExcelFile! + + """Отчет об успеваемости по модулям""" + exportModulesReportToXLS(filter: ModulesReportFilter!): ReportExcelFile! + + """Получение спиcка всех ТБ и регионов по ТБ""" + getTerbanksWithRegions: [TerbanksModel]! + + """Получение заметок за переданный день""" + getAccNotesByDate( + """Дата заметки""" + atDate: Date! + ): [AccNote!]! + + """ + Получение списка проектов, в командах которых хотя бы один ученик из вуза + """ + getAllUniversityProjects: [ProjectCard]! + + """Получение активных учеников вуза из числа зарегистрированных вуза""" + getUniversityActiveStudentsCount: UniversityActiveStudentsCount! + + """Получение количество учеников вуза по этапам проектной деятельности""" + getUniversityNumberOfStudentsOnStage: UniversityNumberOfStudentsOnStage! + + """Получение списка всех классoв вуза""" + getAllUniversityStageGroups: [UniversityStageGroupModel]! + + """Возвращает отчет по успеваемости для""" + exportUniversityModulesReportToXLS(filter: UniversityModulesReportFilter!): ReportExcelFile! + + """""" + createModulesReportXls(filter: ModulesReportFilter!): DefaultResponse! + + """""" + createUniversityModulesReportXls(filter: UniversityModulesReportFilter!): DefaultResponse! + + """ + Резюме + Получение резюме пользователя + """ + getCurrentUserResume: ResumeModel! + + """Получение списка резюме""" + getAllResumesByFilters(resumeFilter: ResumeFilterInput!, paging: PagingInput!): ResumesData! + + """Получение списка резюме из приглашенных""" + getTeamInvitesByFilters(resumeFilter: ResumeFilterInput!, paging: PagingInput!): ResumesData! + + """Получение резюме для УА""" + getResumeByIdForStudent(resumeId: UUID!): ResumeForStudent! + + """Получение резюме для УА (капитана)""" + getResumeByIdForCapitan(resumeId: UUID!): ResumeForCapitan! + + """Получение проектов с учетом просмотров резюме""" + getProjectsViewedUserByFilter(projectFilter: ProjectFilterInput!, paging: PagingInput!): [ProjectViewedModel]! + + """Получение проектов с учетом просмотров приглашений""" + getProjectsInvitedUserByFilter(projectFilter: ProjectFilterInput!, paging: PagingInput!): [ProjectViewedModel]! + + """Получение проектов с учетом приглашений""" + getTeamInviteByTeamId(teamId: UUID!): InviteRequestModel! + + """Получение количества приглашений команды""" + getTeamInvitesCounter: Int! + + """Получение количества приглашений УА""" + getUserInvitesCounter: Int! + + """""" + checkStatusModulesReport: StatusModulesReport! + + """""" + checkStatusUniversityModulesReport: StatusModulesReport! + + """""" + exportAsyncModulesReportToXLS: ReportExcelFile! + + """""" + exportAsyncUniversityModulesReportToXLS: ReportExcelFile! + + """Получение списка заявок""" + getAllRequestsByStatus(status: String!, searchShortFio: String!, paging: PagingInput!): RequestDataModel! + + """Получение данных о соглашениях""" + getAgreementDataByRequestId(requestId: UUID!): AgreementDataModel! + + """Выгрузка файла""" + downloadFile(fileId: UUID!): String! + + """Информация о пользователе Акселератора""" + getAccCurrentUserInfo: AccUserInfoModel! + + """Получение ссылки на загрузку согласия""" + getAccAgreementLink: String! + + """""" + getRefreshNtoScoreStatus: String! + + """""" + getNtoScore(filterAvailable: Boolean, paging: PagingInput!): NtoScoreResponse! + + """ + Виджеты + Прогресс обучения + """ + getStudentModulesWidgetData: StudentModuleWidgetData! + + """Баллы НТО""" + getNtoWidgetData: NtoWidget! +} + +"""""" +type AcceleratorSchool { + """""" + schoolId: UUID! + + """""" + fullName: String! + + """""" + shortName: String! +} + +"""Входная модель опроса""" +input AcceleratorSurveyInput { + """Идентификатор опроса""" + id: UUID + + """Название опроса""" + name: String + + """Дата начала опроса""" + beginDate: DateTime! + + """Окончание опроса""" + endDate: DateTime! + + """Наименование метрики""" + metricId: AcceleratorMetric! + + """Статус""" + status: SurveyStatus! +} + +"""Тип пользователя Акселератора""" +enum AcceleratorUserType { + """""" + UNIVERSITY + + """""" + SCHOOL + + """""" + ACC_SCHOOL_STAGE_0 + + """""" + ACC_UNIVERSITY_STAGE_0 +} + +"""Информация о выполненной мутации""" +type AcceptAnswerResponse { + """Полная информация по Заданию в контексте Студента""" + studentTaskInfo: StudentTaskInfo! + + """ + Информация о текущем состоянии связанной с Заданием Персональной Цели (если есть) + """ + personalObjectiveProgressInfo: PersonalObjectiveProgressInfo + + """ + Информация о текущем состоянии Домашней Работы, с которой связан данный ответ на Задание (если ответ был отправлен в рамках некоторой Домашней Работы) + """ + homeworkProgressInfo: AnswerRelatedHomeworkProgressInfo +} + +"""Информация о следующем "учебном дне" (день на который назначены уроки)""" +type ActiveLearningDayLessonsInfo { + """Список уроков на сегодня""" + todayLessons: [StudentLesson!]! + + """ + Список уроков на следующий после сегодня "учебный день" + """ + nextLearningDayLessons: [StudentLesson!]! + + """ + Дата следующего "учебного дня" + """ + nextLearningDayDate: DateTime + + """Планы уроков на сегодня и следующий "учебный день" (если есть)""" + lessonPlans: [LessonPlan!]! + + """ + Задания Ученика, запланированные на уроки на сегодня и следующий "учебный день" + """ + plannedStudentTasks: [StudentTask!]! +} + +"""""" +type ActiveSurveyWithoutAnswer { + """Идентификатор запроса""" + surveyId: UUID! + + """Наименование метрики""" + metricId: AcceleratorMetric! +} + +"""Мероприятие""" +type ActivityEvent { + """Идентификатор мероприятия""" + activityEventId: ID! + + """Идентификатор события""" + eventId: ID! + + """Дата начала""" + beginDate: DateTime! + + """Дата окончания""" + endDate: DateTime! + + """Место проведения""" + location: String! + + """Описание""" + description: String + + """Максимальное количество участников""" + maxStudentCount: Int + + """Видно ли мероприятие студентам""" + isVisible: Boolean! + + """Название""" + name: String! + + """Активен ли лист ожидания""" + isWaitListActive: Boolean! + + """Текущее число зарегистрированных студентов на мероприятие""" + currentStudentsCount: Int! + + """Текущее число студентов в списке ожидания""" + currentWaitListStudentsCount: Int! + + """Дата создания мероприятия""" + createDate: DateTime! + + """Дата обновления мероприятия""" + updateDate: DateTime! + + """Индентификатор школы""" + schoolId: ID! + + """Дата начала регистрации""" + startRegisterDate: DateTime + + """Дата завершения регистрации""" + stopRegisterDate: DateTime + + """Зарегистрирован студент на событие или нет""" + isRegistered: Boolean + + """Находится ли студент в листе ожидания""" + isInWaitList: Boolean + + """Тип мероприятия""" + activityType: String! + + """Тип события""" + eventType: String! + + """Обязательное ли мероприятие""" + isMandatory: Boolean! + + """Средняя оценка мероприятия по отзывам""" + averageFeedbackRating: Float! + + """Количество оставленых отзывов""" + feedbackCount: Int! + + """Оценка текущего студента""" + studentFeedback: StudentEventFeedback + + """Мероприятие с работодателем""" + isEmployerMeeting: Boolean! + + """Ключевые спикеры""" + keySpeakers: String + + """Внутренне/ внешнее мероприятие""" + isInternal: Boolean + + """Работодатель ПАО Сбербанк/другой""" + isSberEmployer: Boolean + + """Потенциальный работодатель?""" + isPotentialEmployer: Boolean + + """Организаторы""" + organizers: [User!] + + """Статус заявкм""" + status: ParticipantEventStatus + + """Создатель мероприятия (события)""" + eventCreator: User + + """Последний редактировавший пользователь""" + eventUpdater: User + + """Комментарии к событию""" + comments: [ParticipantEventComment!] +} + +"""Мероприятие""" +input ActivityEventByStudentInputModel { + """Дата начала""" + beginDate: DateTime! + + """Дата окончания""" + endDate: DateTime! + + """Место проведения""" + location: String! + + """Максимальное количество участников""" + maxStudentCount: Int! + + """Название""" + name: String! + + """Описание""" + description: String + + """Активен ли лист ожидания""" + isWaitListActive: Boolean + + """Дата начала регистрации""" + startRegisterDate: DateTime + + """Дата завершения регистрации""" + stopRegisterDate: DateTime + + """Инпут типа мероприятия""" + activityType: ActivityTypeInput! + + """Список id школ/кампусов для мероприятия""" + schools: [UUID!]! + + """Список параллелей для мероприятия""" + stages: [ID]! + + """Организаторы""" + organizers: [UUID] + + """Комментарий""" + comment: String +} + +"""Мероприятие""" +input ActivityEventInput { + """Дата начала""" + beginDate: DateTime! + + """Дата окончания""" + endDate: DateTime! + + """Место проведения""" + location: String! + + """Максимальное количество участников""" + maxStudentCount: Int! + + """Видимость""" + isVisible: Boolean! + + """Название""" + name: String! + + """Описание""" + description: String + + """Активен ли лист ожидания""" + isWaitListActive: Boolean + + """Дата начала регистрации""" + startRegisterDate: DateTime + + """Дата завершения регистрации""" + stopRegisterDate: DateTime + + """Инпут типа мероприятия""" + activityType: ActivityTypeInput! + + """Обязательное ли мероприятие""" + isMandatory: Boolean! + + """Список коалиций для мероприятия""" + coalitions: [ID]! + + """Список id школ/кампусов для мероприятия""" + schools: [UUID!]! + + """Список классов для мероприятия""" + stageGroups: [ID]! + + """Список параллелей для мероприятия""" + stages: [ID]! + + """Список уровней студентов для мероприятия""" + levels: [ID]! + + """Внутреннее/внешнее мероприятие""" + isInternal: Boolean + + """Ключевые спикеры""" + keySpeakers: String + + """ + Является ли типом "Мероприятие с работодателем" + """ + isEmployerMeeting: Boolean + + """Потенциальный работодатель""" + isSberEmployer: Boolean + + """Является ли встречей с потенциальным работодателем""" + isPotentialEmployer: Boolean + + """Организаторы""" + organizers: [UUID] + + """Комментарий""" + comment: String +} + +"""Тип мероприятия""" +type ActivityType { + """Идентификатор типа""" + id: ID! + + """Название""" + description: String! + + """Категория""" + category: String! +} + +"""""" +input ActivityTypeInput { + """Идентификатор типа""" + id: ID! + + """Название""" + description: String! + + """Категория""" + category: String +} + +"""Для добавления урока""" +input AddLessonInput { + """Дата проведения урока""" + date: DateTime! + + """Идентификатор интервала времени, в который проводится урок""" + lessonTimeslotId: ID! + + """Идентификатор классной комнаты""" + classRoomId: ID + + """Идентфикатор группы класса по предмету""" + stageSubjectGroupId: ID! + + """Идентификатор предмета""" + subjectId: ID! + + """Идентификатор учителя""" + teacherId: UUID! + + """Тип повтора создания урока""" + repeatType: CreateLessonRepeat! + + """ + Дата окончания создания повторов урока. Обязательно если repeatType не NONE + """ + repeatLessonEndDate: Date +} + +""" +Результат выполнения запроса addStudyStepSubjectLearningActivitiesResult +""" +type AddStudyStepSubjectLearningActivitiesResult { + """Список всех форм контроля""" + subjectLearningActivities: [StudyStepSubjectLearningActivities!]! + + """Результаты привязки элемента набора к предмету и уровню образования""" + studyStepSubjectLearningActivitiesAdditionResults: [StudyStepSubjectLearningActivitiesAdditionResult!]! +} + +"""""" +type AdditionalAttributes { + """""" + taskId: ID! + + """""" + cookiesCount: Int! + + """""" + periodOfVerification: Int! + + """""" + reviewUserCount: Int! + + """""" + pointTask: Int! + + """""" + percentageOfCompletion: Int! + + """""" + percentageOfCompletionMentorCheck: [MentorFeedBacksPercentage!] + + """""" + p2pFormula: P2pFormulasType! + + """""" + percentageOfBonusP2p: Int! + + """""" + firstMistakeP2p: Boolean! + + """""" + percentageOfBonusAuto: Int! + + """""" + firstMistakeAuto: Boolean! + + """""" + softSkillPercentage: [SoftSkillPercentage!]! + + """""" + groupSoftSkillPercentage: [SoftSkillPercentage!]! + + """""" + codeReviewSkillPercentage: [SoftSkillPercentage!]! + + """""" + gitDockerImageName: String + + """""" + staffCheck: Boolean! + + """Количество требуемых проверок (код-ревью)""" + requiredCodeReviewCount: Int @deprecated(reason: "Will be deleted. Use maxCodeReviewCount") + + """Максимальное количество проверяющих (код-ревью)""" + maxCodeReviewCount: Int + + """Длительность проверки (код-ревью, в минутах)""" + codeReviewDuration: Int + + """Стоимость проверки (Code Review Points)""" + codeReviewCost: Int + + """Включение/выключение ci/cd""" + enableCiCd: GitlabCiCdType + + """ + Включение/выключение возможности возвращаться к предыдущим вопросам и изменять ответы + """ + enableStepBack: Boolean +} + +"""Под удаление. Использовать AdditionalAttributesForTaskInput""" +input AdditionalAttributesInput { + """""" + taskId: ID! + + """""" + cookiesCount: Int! + + """""" + periodOfVerification: Int! + + """""" + reviewUserCount: Int! + + """""" + pointTask: Int! + + """""" + percentageOfCompletion: Int! + + """""" + percentageOfCompletionMentorCheck: [MentorCheckInput!] + + """""" + p2pFormula: P2pFormulasType! + + """""" + percentageOfBonusP2p: Int + + """""" + firstMistakeP2p: Boolean + + """""" + percentageOfBonusAuto: Int + + """""" + firstMistakeAuto: Boolean + + """""" + softSkillPercentage: [SoftSkillPercentageInput!]! + + """""" + groupSoftSkillPercentage: [SoftSkillPercentageInput!]! + + """""" + codeReviewSkillPercentage: [SoftSkillPercentageInput!] + + """""" + staffCheck: Boolean + + """Количество требуемых проверок (код-ревью)""" + requiredCodeReviewCount: Int + + """Максимальное количество проверяющих (код-ревью)""" + maxCodeReviewCount: Int + + """Длительность проверки (код-ревью, в минутах)""" + codeReviewDuration: Int + + """Стоимость проверки (Code Review Points)""" + codeReviewCost: Int + + """Включение/выключение ci/cd""" + enableCiCd: GitlabCiCdType + + """ + Включение/выключение возможности возвращаться к предыдущим вопросам и изменять ответы + """ + enableStepBack: Boolean +} + +""" +Сущность с информацией о возможности назначения доп проверки по ответу студента +""" +type AdditionalCheckButtonStateModel { + """Флаг с информацией о доступности кнопки""" + isButtonAvailable: Boolean! + + """ + Причина, по которой проверка не может быть назначена (null, если проверку назначить возможно) + """ + message: String +} + +"""Модель, где название кампуса со списком логинов проверяющих""" +type AdditionalCheckCampus { + """ID кампуса""" + schoolId: UUID! + + """Название кампуса""" + campusName: String! + + """ + Логины пользователей, которые могут быть назначены проверяющими (студенты + БА) + """ + availableVerifiersLogins: [String!]! +} + +""" +Модель с первоначальной информацией для назначения дополнительной проверки +""" +type AdditionalCheckInitialData { + """Идентификатор ответа студента""" + studentAnswerId: ID! + + """Кол-во минут, необходимых для проведения проверки""" + checkDurationMinutes: Int! + + """ + Флаг для алерта, что дополнительная проверка не повлияет на рез-тат попытки, т.к одна из проверок (кроме P2P) завершена провалом + true - если проверка не повлияет на финальный результат + false - во всех остальных случаях (включая ситуацию, когда проект находится на стадии проверок) + """ + additionalCheckWillNotAffectTheOverallAttemptResult: Boolean! + + """ + Сущность с информацией о возможности назначения доп проверки по ответу студента. NonNull но не ставим ! для обратной совместимости + """ + additionalCheckButtonState: AdditionalCheckButtonStateModel + + """Список кампусов с логинами проверяющих""" + additionalCheckCampuses: [AdditionalCheckCampus!]! +} + +"""Сущность инициации дополнительно проверки по ответу студента""" +input AdditionalCheckInitiationInputModel { + """Идентификатор ответа студента, для которого инициируется доп. проверка""" + studentAnswerId: ID! + + """Тип дополнительной проверки""" + checkType: AdditionalCheckType! + + """Логин проверяющего""" + verifierLogin: String! + + """Дата начала проверки""" + checkStart: DateTime! + + """Дата окончания проверки""" + checkEnd: DateTime! + + """ID школы""" + schoolId: UUID! +} + +"""Типы дополнительных проверок""" +enum AdditionalCheckType { + """ + Экстра проверка + По смыслу не отличается от обычной проверки, + за исключением отсутствия ограничения по кол-ву проверок в конструкторе задания + """ + EXTRA + + """Приоритетная проверка""" + PRIORITY +} + +"""Дополнительная информация про чек-лист""" +type AdditionalChecklist { + """Id заполненного чек-листа""" + filledChecklistId: ID + + """Этап заполненного чек-листа с отзывом""" + filledChecklistStageEnum: FilledChecklistStageEnum + + """Id записи онлайн проверки""" + filledChecklistStatusRecordingEnum: FilledChecklistStatusRecordingEnum +} + +"""""" +enum AdditionalContentFormat { + """""" + ONLINE + + """""" + OFFLINE +} + +"""Учебные параллели для дополнительных материалов""" +enum AdditionalContentStage { + """1-я параллель""" + FIRST + + """2-я параллель""" + SECOND + + """3-я параллель""" + THIRD + + """4-я параллель""" + FOURTH + + """5-я параллель""" + FIFTH + + """6-я параллель""" + SIXTH + + """7-я параллель""" + SEVENTH + + """8-я параллель""" + EIGHTH + + """9-я параллель""" + NINTH + + """10-я параллель""" + TENTH + + """11-я параллель""" + ELEVENTH + + """Материал для всех параллелей""" + FOR_ALL +} + +"""Типы дополнительного материала""" +enum AdditionalContentType { + """Книга""" + BOOK + + """Ссылка на другой источник""" + LINK + + """Документ (например, MS Word)""" + DOCUMENT + + """Видео""" + VIDEO + + """Изображение""" + IMAGE + + """Аудио""" + AUDIO + + """Презентация""" + PRESENTATION + + """Статья""" + PAPER + + """Курс""" + COURSE + + """Олимпиада.""" + OLYMPIAD + + """Конкурс.""" + CONTEST + + """Кружок""" + CLUB + + """Глобальный план""" + GLOBAL_PLAN + + """Учебный модуль""" + MODULE + + """Учебное задание""" + TASK + + """Учебные материалы""" + EDUCATIONAL_MATERIALS + + """Челлендж""" + CHALLENGE + + """Плейлист""" + PLAYLIST + + """SCORM пакет""" + SCORM + + """Учебное задание издательства РосУчебник""" + ROS_UCHEBNIK + + """Учебное задание издательства Физикон""" + PHYSICON + + """Учебное задание-тренажер""" + TRAINING_INTEGRATION + + """Учебное задание-опросник""" + EXTERNAL_SURVEY +} + +"""Публичный профиль конфигуратора""" +type AdminBusinessPublicProfile { + """""" + firstName: String! + + """""" + middleName: String + + """""" + lastName: String! + + """""" + avatarUrl: String + + """""" + contacts: [ContactData!]! + + """""" + functionalRoles: [FunctionalRoleData!]! +} + +"""Дополнительная информация для агенды""" +type AgendaAdditionalInfo { + """""" + key: String + + """""" + value: String +} + +"""""" +enum AgendaEntityType { + """""" + EVENT + + """""" + BOOKING + + """""" + STUDENT_GOAL +} + +"""События для агенды s21""" +type AgendaEvent { + """Сущность, по которой определяется какое это событие""" + agendaItemContext: AgendaItemContext! + + """Дата и время начала события""" + start: DateTime! + + """Дата и время завершения события""" + end: DateTime! + + """Заголовок события""" + label: String! + + """Описание события""" + description: String! + + """Тип мероприятия для отображения""" + agendaEventType: AgendaEventType! + + """Дополнительная информация для агенды""" + additionalInfo: [AgendaAdditionalInfo!] +} + +"""""" +enum AgendaEventType { + """""" + TEAM_CHECK_FOR_VERIFIER + + """""" + CHECK_FOR_VERIFIER + + """""" + CHECK_FOR_VERIFIABLE + + """""" + STAFF_CHECK_FOR_VERIFIABLE + + """""" + CODE_REVIEW + + """""" + ACTIVITY + + """""" + EMPLOYER_MEETING + + """""" + PARTICIPANT_EVENT + + """""" + EXAM + + """""" + PENALTY + + """""" + PRIORITY_ADDITIONAL_CHECK + + """""" + EXTRA_ADDITIONAL_CHECK + + """""" + EXTRA_FOR_VERIFIER + + """""" + PRIORITY_FOR_VERIFIER + + """""" + EXTRA_FOR_VERIFIABLE + + """""" + PRIORITY_FOR_VERIFIABLE + + """""" + STAFF_EXTRA_FOR_VERIFIABLE + + """""" + STAFF_PRIORITY_FOR_VERIFIABLE +} + +"""Сущность, по которой определяется какое это событие""" +type AgendaItemContext { + """Идентификатор сущности (зависит от AgendaEntityType)""" + entityId: ID! + + """Тип идентификатора сущности""" + entityType: AgendaEntityType! +} + +"""Агрегированные данные для диаграммы Радар (Паутинка)""" +type AggregatedSkillStudentRadarChart { + """Агрегированные данные по мягким навыкам""" + softSkillData: [StudentRadarChartBySkill!]! + + """Агрегированные данные по цифровым навыкам""" + digitalSkillData: [StudentRadarChartBySkill!]! + + """""" + testFactComplete: Boolean! +} + +"""Агрегированные данные для диаграммы Радар (Паутинка)""" +type AggregatedStudentRadarChart { + """Агрегированные данные по предметам""" + subjectData: [StudentRadarChartBySubject!]! +} + +"""""" +type AgreementDataModel { + """""" + agreements: [AgreementModel]! + + """""" + isPdnAgreement: Boolean! + + """""" + isMarketAgreement: Boolean! +} + +"""""" +type AgreementModel { + """""" + fileId: UUID! + + """""" + fileName: String! + + """""" + uploadDt: DateTime! +} + +"""""" +enum AmountTasksInStatusesEnum { + """Назначено""" + ASSIGNED + + """Требуется проверка учителем""" + NEED_CHECK + + """Задание зачтено""" + ACCEPTED + + """Задание провалено""" + FAILED + + """Задание провалено, но у пользователя есть еще попытки его пройти""" + TRY_AGAIN + + """Задание в работе (прохождение тренажера)""" + IN_PROGRESS + + """Все задания""" + ALL_STATUSES + + """ + Количество карточек "Добавлен комментарий" + """ + BY_MESSAGE_TASK + + """Просроченные задания""" + OVERDUE_TASKS + + """Задачи на проверку с просроченным временем проверки""" + NEED_CHECK_OVERDUE +} + +"""""" +type AnalyticsDataAcademicPerformance { + """Список успешно сданных предметов""" + successfulSubjects: [String] + + """Список неуспешно сданных предметов""" + warningSubjects: [String] + + """Список рекомендованных профилей""" + recommendedProfiles: [String] + + """Список рекомендованных предметов""" + recommendedSubjects: [String] +} + +"""""" +input AnswerBodyInput { + """Ответ на тест""" + testAnswerBody: TestAnswerBodyInput + + """Простой ответ""" + simpleAnswerBody: SimpleAnswerBodyInput + + """Развернутый ответ""" + fullAnswerBody: FullAnswerBodyInput + + """Заполнение пропусков""" + fillingGapAnswerBody: FillingGapAnswerBodyInput + + """Сортировка""" + sortableAnswerBody: SortableAnswerBodyInput + + """Соединение линиями""" + lineConnectorAnswerBody: LineConnectorAnswerBodyInput + + """новое body для Кода""" + codeAnswerBody: CodeAnswerBodyInput + + """ответ на scorm-задание""" + scormAnswerBody: ScormAnswerBodyInput + + """ + Отправляемый ответ на виджет "Таблица (выбор одного)" + """ + matrixAnswerBody: MatrixAnswerBodyInput + + """ + Отправляемый ответ на виджет "Таблица (множественный выбор)" + """ + matrixDropdownAnswerBody: MatrixDropdownAnswerBodyInput + + """ + Отправляемый ответ на виджет "Множественный выбор текста" + """ + multipleTextAnswerBody: MultipleTextAnswerBodyInput +} + +"""""" +type AnswerFile { + """Имя файла ответа""" + name: String! + + """Ссылка на файл ответа""" + link: String! +} + +""" +Информация о состоянии закрывающего теста после сохранения ответа на задание из теста +""" +type AnswerRelatedGoalLevelTestProgressInfo { + """Закрывающий тест в контексте студента""" + studentGoalLevelTest: StudentGoalLevelTest! +} + +""" +Информация о текущем состоянии Домашней Работы, с которой связан данный ответ на Задание +""" +type AnswerRelatedHomeworkProgressInfo { + """Признак выполненности Домашней Работы""" + isComplete: Boolean! +} + +"""статус ответа ученика""" +enum AnswerStatusEnum { + """Ожидает назначения проверяющих""" + WAITING_FOR_REVIEWERS + + """на проверке""" + CHECK_IN_PROGRESS + + """не принято, пробуй еще""" + REJECTED_TRY_AGAIN + + """принято""" + ACCEPTED + + """не принято, пробуй другое""" + REJECTED_FINAL + + """отозван""" + WITHDRAWN +} + +"""""" +input AnswerToWidgetInput { + """Идентификатор виджета""" + widgetId: UUID! + + """Тип группы виджетов""" + widgetGroupType: WidgetGroupTypeEnum! + + """Тип виджета""" + widgetType: WidgetTypeEnum! + + """Композиционный тип для тела ответа на виджет""" + answerBody: AnswerBodyInput + + """Файлы, прикрепленные к ответу на виджет""" + files: [FileInput!] + + """Идентификатор варианта вопроса тренажера""" + variantId: String +} + +"""""" +type ApiMigrationMutations { + """ + Выполнение миграции ответов ученика + SM-8348 + """ + migrateStudentAnswerContentsFromPGToMongo(amount: Int!): Boolean! + + """ + Закрыть модуль + SM-8499 + """ + directAchieveBatch(goalId: ID!, students: [UUID!]!): Boolean! + + """Массовое объявление заданий выполненными""" + acceptTaskBatch( + """ + Произвольное название для единичного вызова миграции (записывается в edu_power_shard.study_process_migration_log.migration_call_name) + """ + migrationCallName: String! + + """Пары <идентификатор студента, идентифкатор задания>""" + pairs: [Student2TaskPairForAcceptInput!]! + ): Boolean! + + """ + Массовое изменение статусов заданий и последних статусов ответов по этим заданиям + """ + changeTaskStatusAndAnswerStatusBatch( + """ + Произвольное название для единичного вызова миграции (записывается в edu_power_shard.study_process_migration_log.migration_call_name) + """ + migrationCallName: String! + + """ + Входные параметры <идентификатор студента, идентифкатор задания, новый статус задания, новый статус ответа> + """ + taskStatusAndAnswerStatusList: [TaskStatusAndAnswerStatusForChangeInput]! + ): Boolean! + + """ + мигрировать учебные модули из Контент-сервиса в сервис Каталога (создается описание в каталоге, сами модули остаются в контенте) + """ + moduleToCatalogItem( + """мигрировать конкретный учебный модуль""" + moduleId: ID + + """диапазон даты (период с)""" + dateFrom: Date + + """диапазон даты (период по)""" + dateTo: Date + + """диапазон даты с временем (период с)""" + dateTimeFrom: DateTime + + """диапазон даты с временем (период по)""" + dateTimeTo: DateTime + + """ограничение по кол-ву записей""" + limit: Int + + """ + период дат как дата модификации (по умолчанию true), если false - то период по дате создания + """ + periodAsDateModify: Boolean + ): MigrationToCatalogResult! @deprecated(reason: "Использовать initQueue/migrateUsingQueue/deleteQueue") + + """Исправление тенантов глобальных заданий в каталоге""" + globalTaskCatalogItemTenantFix( + """Начало верменного промеждутка миграции""" + start: Date + + """Конец временного промеждутка миграции""" + end: Date + ): MigrationToCatalogResult! + + """""" + globalModuleCatalogItemTenantFix: MigrationToCatalogResult! + + """ + мигрировать книги из Контент-сервиса в сервис Каталога (создается описание в каталоге, сами книги остаются в контенте) + """ + bookToCatalogItem( + """ограничение по кол-ву записей""" + limit: Int + ): MigrationToCatalogResult! @deprecated(reason: "Использовать initQueue/migrateUsingQueue/deleteQueue") + + """ + мигрировать задания из Контент-сервиса в сервис Каталога (создается описание в каталоге, сами задания остаются в контенте) + """ + taskToCatalogItem( + """мигрировать конкретное задание""" + taskId: ID + + """диапазон даты модификации (период с)""" + dateFrom: Date + + """диапазон даты (период по)""" + dateTo: Date + + """диапазон даты с временем модификации (период с)""" + dateTimeFrom: DateTime + + """диапазон даты с временам (период по)""" + dateTimeTo: DateTime + + """ограничение по кол-ву записей""" + limit: Int + ): MigrationToCatalogResult! @deprecated(reason: "Использовать initQueue/migrateUsingQueue/deleteQueue") + + """ + мигрировать внешние задания из Контент-сервиса в сервис Каталога (создается описание в каталоге) + """ + externalTaskToCatalogItem( + """мигрировать конкретное задание""" + externalTaskId: ID + + """диапазон даты создания (период с)""" + dateFrom: Date + + """диапазон даты создания (период по)""" + dateTo: Date + + """ограничить кол-во записей для миграции""" + limit: Int + + """пропустить заданное кол-во записей""" + offset: Int + ): MigrationToCatalogResult! @deprecated(reason: "Использовать initQueue/migrateUsingQueue/deleteQueue") + + """ + корректировка EDUCATION_SUBJECT/SUBJECT_NAME, EDUCATION_STAGE/STAGE_NAME + """ + fixCatalogSubject( + """диапазон даты создания (период с)""" + dateFrom: Date + + """диапазон даты создания (период по)""" + dateTo: Date + + """диапазон даты и времени создания (период с)""" + dateTimeFrom: DateTime + + """диапазон даты и времени создания (период по)""" + dateTimeTo: DateTime + + """код контента (например, 11000 - модули)""" + contentId: Int + + """ограничение кол-ва записей""" + limit: Int + ): CatalogFixResult! + + """Массовое создание read facts""" + createTaskMessageReadFacts( + """Количество сообщений для создания по ним фактов прочтения""" + messageCount: Int! + + """Дата, до которой нужно создавать факты прочтения сообщений""" + dateUntil: Date! + ): Boolean! + + """ + Миграция заметок к заданию, возвращает количество заданий, для которых заметки еще не были смигрированы + """ + migrateTaskNotesFromMongoToPG( + """ + Произвольное название для единичного вызова миграции (записывается в edu_power_content.content_migration_log.migration_call_name) + """ + migrationCallName: String! + + """Количество заданий для миграции""" + batchSize: Int! + ): Int! + + """ + Миграция заметок к модулю, возвращает количество модулей, для которых заметки еще не были смигрированы + """ + migrateGoalNotesFromMongoToPG( + """ + Произвольное название для единичного вызова миграции (записывается в edu_power_content.content_migration_log.migration_call_name) + """ + migrationCallName: String! + + """Количество модулей для миграции""" + batchSize: Int! + ): Int! + + """ + Ручной запрос обработки событий связанных с Персональными Целями (в случае если основной механизм по какой-то причине его не обработал) + """ + processPersonalObjectiveRelatedEventsManually( + """Список ИД событий для обработки (берётся из БД)""" + eventIds: [UUID!]! + ): Boolean! + + """""" + assignGlobalContentForSystemAdmins: SystemAdminMigrationResult! + + """Пересчет количества попыток ответить на задание""" + retryCountRecalculation( + """ + Произвольное название для единичного вызова миграции (записывается в edu_power_content.content_migration_log.migration_call_name) + """ + migrationCallName: String! + + """Идентификаторы заданий студентов""" + studentTaskIds: [ID!]! + ): Boolean! + + """Миграция отсутствующих заданий в каталог""" + migrateTasksToCatalog( + """ + Произвольное название для единичного вызова миграции (записывается в edu_power_content.content_migration_log.migration_call_name) + """ + migrationCallName: String! + + """Количество заданий для миграции в каталог""" + batchSize: Int! + + """Размер страницы для получения элементов каталога (getAllItems)""" + catalogPageSize: Int + ): Int! + + """Миграция отсутствующих модулей в каталог""" + migrateGoalsToCatalog( + """ + Произвольное название для единичного вызова миграции (записывается в edu_power_content.content_migration_log.migration_call_name) + """ + migrationCallName: String! + + """Количество модулей для миграции в каталог""" + batchSize: Int! + + """Размер страницы для получения элементов каталога (getAllItems)""" + catalogPageSize: Int + ): Int! + + """удалить очередь на миграцию""" + deleteQueue(entityType: ContentMigrationEntityType!): Int! + + """инициализация очереди на миграцию""" + initQueue(entityType: ContentMigrationEntityType!, dateFrom: Date, dateTo: Date): Int! + + """миграция контента в каталог""" + migrateUsingQueue(entityType: ContentMigrationEntityType!, limit: Int): MigrationToCatalogResultV2! + + """ + Миграция тенантов модуля в контент сервисе, возвращает количество несмигрированных модулей. + """ + migrateGoalTenant( + """ + Произвольное название для единичного вызова миграции (записывается в edu_power_content.content_migration_log.migration_call_name) + """ + migrationCallName: String! + + """Количество модулей для миграции""" + batchSize: Int! + + """Размер страницы для получения элементов каталога (getAllItems)""" + catalogPageSize: Int + ): Int! + + """ + Миграция тенантов задания в контент сервисе, возвращает количество несмигрированных заданий. + """ + migrateTaskTenant( + """ + Произвольное название для единичного вызова миграции (записывается в edu_power_content.content_migration_log.migration_call_name) + """ + migrationCallName: String! + + """Количество заданий для миграции""" + batchSize: Int! + + """Размер страницы для получения элементов каталога (getAllItems)""" + catalogPageSize: Int + ): Int! + + """ + public void syncGoals(final List goalIds, final boolean syncTasks) { + Миграция тенантов задания в контент сервисе, возвращает количество несмигрированных заданий. + """ + syncGoals( + """ID модулей для миграции. Синхронизация идет пачками по 100 модулей""" + goalIds: [Int!]! + + """Нужно ли синхронизировать задания из указанных модулей""" + syncTasks: Boolean! + ): Boolean! + + """Миграция HTML-контента из survey в generic""" + migrateSurveyHTMLContentToGeneric( + """ + Произвольное название для единичного вызова миграции (записывается в edu_power_content.content_migration_log.migration_call_name) + """ + migrationCallName: String! + + """Идентификатор тенанта для фильтрации""" + tenantIds: [UUID!] + + """Идентификаторы заданий, которые нужно исключить из миграции""" + taskIds: [ID!] + + """Идентификаторы модулей, которые нужно исключить из миграции""" + goalIds: [ID!] + + """Количество единиц контента для миграции""" + batchSize: Int! + ): Int! + + """Миграция JSON-контента из survey в generic""" + migrateSurveyJSONContentToGeneric( + """ + Произвольное название для единичного вызова миграции (записывается в edu_power_content.content_migration_log.migration_call_name) + """ + migrationCallName: String! + + """Идентификатор тенанта для фильтрации""" + tenantIds: [UUID!] + + """Идентификаторы заданий, которые нужно исключить из миграции""" + taskIds: [ID!] + + """Идентификаторы модулей, которые нужно исключить из миграции""" + goalIds: [ID!] + + """Количество единиц контента для миграции""" + batchSize: Int! + ): Int! + + """Миграция python-заданий в WidgetCode(MIXED)""" + migratePythonTasks( + """ + Произвольное название для единичного вызова миграции (записывается в edu_power_content.content_migration_log.migration_call_name) + """ + migrationCallName: String! + + """Идентификатор тенанта для миграции""" + tenantIds: [UUID!] + + """Идентификаторы заданий, которые нужно исключить из миграции""" + taskIds: [ID!] + + """Идентификаторы модулей, которые нужно исключить из миграции""" + goalIds: [ID!] + + """Количество единиц контента для миграции""" + batchSize: Int! + ): Int! + + """Миграция scorm-заданий в generic""" + migrateScormTasks( + """ + Произвольное название для единичного вызова миграции (записывается в edu_power_content.content_migration_log.migration_call_name) + """ + migrationCallName: String! + + """Идентификатор тенанта для миграции""" + tenantIds: [UUID!] + + """Идентификаторы заданий, которые нужно исключить из миграции""" + taskIds: [ID!] + + """Идентификаторы модулей, которые нужно исключить из миграции""" + goalIds: [ID!] + + """Количество модулей для миграции""" + batchSize: Int! + ): Int! + + """Тестирование миграции запускаемой из batch сервиса""" + migrateStartBatch( + """Произвольное название для единичного вызова миграции""" + migrationCallName: String! + ): Int! + + """ + Миграция контента заданий из mongo в postgres, возвращает количество несмигрированных заданий. + """ + migrateTaskContentToPostgres( + """ + Произвольное название для единичного вызова миграции (записывается в edu_power_content.content_migration_log.migration_call_name) + """ + migrationCallName: String! + + """Количество заданий для миграции""" + batchSize: Int! + ): Int! + + """""" + migrateGameTasks( + """ + Произвольное название для единичного вызова миграции (записывается в edu_power_content.content_migration_log.migration_call_name) + """ + migrationCallName: String! + + """Количество модулей для миграции""" + batchSize: Int! + ): Int! + + """ + Миграция по дублированию ответов на ЗТ в витрину student_answers_showcase, + возвращает оставшееся количество несмигрированных записей в edu_power_shard.xref_student_goal_level_test_attempt_2_task + """ + migrateStudentTaskAttemptToStudentAnswersShowcase( + """ + Произвольное название для единичного вызова миграци + (записывается в edu_power_shard.study_process_migration_log и edu_power_shard.glt_attempt_answer_migration_log) + """ + migrationCallName: String! + + """Количество записей для миграции""" + batchSize: Int! + ): Int! @deprecated(reason: "Мутация создана для разового выполнения миграции; EDU-66327") +} + +"""""" +type ApiMigrationQueries { + """ + Возвращает количество ответов, которые необходимо мигрировать + SM-8348 + """ + countStudentAnswersWithContentInPG: Int! + + """Возвращает количество сообщений, по которым еще не созданы read facts""" + countTaskMessagesForCreationReadFact( + """Дата, до которой факты прочтения не создавались""" + dateUntil: Date! + ): Int! + + """ + Возвращает количество модулей, не синхронизированных с сервисом каталога + """ + countModulesNotSyncedWithCatalog( + """диапазон даты с временем (период с)""" + dateTimeFrom: DateTime + + """диапазон даты с временем (период по)""" + dateTimeTo: DateTime + + """ + период дат как дата модификации (по умолчанию true), если false - то период по дате создания + """ + periodAsDateModify: Boolean + ): Int! + + """Возвращает количество книг, не синхронизированных с сервисом каталога""" + countBooksNotSyncedWithCatalog: Int! + + """ + Возвращает количество заданий, не синхронизированных с сервисом каталога + """ + countTasksNotSyncedWithCatalog( + """диапазон даты с временем модификации (период с)""" + dateTimeFrom: DateTime + + """диапазон даты с временам (период по)""" + dateTimeTo: DateTime + ): Int! +} + +"""""" +type ApplicationBuildInfo { + """ArtifactId приложения""" + artifactId: String + + """Дата сборки""" + buildDate: DateTime + + """Номер сборки из jenkins""" + buildNumber: String + + """Версия миграции flyway""" + flywayMigrationVersions: [flywayMigrationVersion!] + + """Id последнего коммита в ветке, из которой собиралось приложение""" + commitId: String + + """Автор последнего коммита в ветке, из которой собиралось приложение""" + commitUserName: String + + """Branch в гите, из которого была запущена сборка""" + branch: String + + """Теги, с которыми запускалась сборка""" + tags: String +} + +""" +Build info приложения, микросервиса или модуля, в котором хранится информация о сборке, версии, миграции flyway и т.п. +""" +type ApplicationInfo { + """Название приложения""" + applicationName: String! + + """Информация о сборке приложения""" + applicationBuildInfo: ApplicationBuildInfo + + """ + В случае если при вызове данного сервиса упала ошибка, то она передается в это поле, applicationBuildInfo при этом приходит пустой + """ + error: String +} + +"""""" +type AreaPolygon { + """""" + areaPolygonId: UUID + + """""" + areaFiasId: UUID! + + """""" + areaName: String! + + """""" + areaShortName: String! + + """""" + polygon: String + + """""" + centerPoint: String + + """""" + isCity: Boolean! + + """""" + mapMetrics: MapMetrics! +} + +"""Информация о виджите""" +type AsapWidgetInfo { + """id объявления""" + adtWidgetId: Int + + """Маленькое изображение""" + shortImg: String + + """Короткое название объявления""" + shortTitle: String! + + """Ссылка на маленькое объявление""" + shortUrl: String + + """Дата начала показа""" + startDate: DateTime + + """Дата завершения показа""" + finishDate: DateTime + + """Флаг отображения даты на виджите""" + showFinishDate: Boolean! + + """Полный заголовок объявления""" + fullTitle: String! + + """Текст объявления""" + text: String + + """Url картинки объявления""" + fullImgUrl: String + + """Тип объявления""" + adtTypeId: Int + + """Группы по предметам""" + stages: [ClassSubject] + + """Показывать всем""" + isForEveryone: Boolean +} + +"""Список виджитов""" +type AsapWidgetInfoList { + """Список виджетов""" + widgetList: [AsapWidgetInfo] +} + +"""создание и редактирование Виджета ASAP""" +input AsapWidgetInput { + """Маленькое изображение""" + shortImg: String + + """Короткое название объявления""" + shortTitle: String! + + """Ссылка на маленькое объявление""" + shortUrl: String + + """Дата начала показа""" + startDate: DateTime + + """Дата завершения показа""" + finishDate: DateTime + + """Флаг отображения даты на виджете""" + showFinishDate: Boolean! + + """Флаг показа для всех""" + isForEveryone: Boolean! + + """Полный заголовок объявления""" + fullTitle: String! + + """Текст объявления""" + text: String + + """Url картинки объявления""" + fullImgUrl: String + + """Тип объявления""" + adtTypeId: Int + + """Список связанных групп по предмету""" + stageSubjectGroupsIds: [ID] +} + +"""""" +input AssignTaskSetToStudentRequest { + """идентификатор Учебного Модуля (goals.goal_id)""" + moduleId: ID! + + """идентмфикатор Студента (students.student_id)""" + studentId: UUID! + + """ + идентифкатор Набора Заданий (base_playlists.base_playlist_id) или (teacher_playlists.teacher_playlist_id) + """ + taskSetId: ID! + + """тип Набора Заданий""" + taskSetType: PlaylistType! + + """ + флаг - проверять аффектит ли учебный процесс студента изменение плейлиста + """ + isNeedToCheckAffecting: Boolean! +} + +"""""" +type AssignTaskSetToStudentResponse { + """Персонализированный Учебный Модуль""" + module: StudentModule + + """ + Все Плейлисты доступные Учителю по этому Учебному Модулю, как Учительские так и Базовые + """ + taskSets: [TaskSet!] + + """успешно ли выполнение запроса (пройдены ли все проверки)""" + isSuccess: Boolean! +} + +""" +Запрос на назначение Студенту в Подгруппе Варианта Контрольной Работы на Группу по Предмету +""" +input AssignVariantToStudentRequest { + """ + идентификатор Студента в Подгруппе (stage_subject_subgroup_students.stage_subject_subgroup_student_id) + """ + studentInSubgroupId: ID! + + """ + идентификатор Варианта Контрольной Работы, который назначен ученику (stage_subject_group_control_work_variants.stage_subect_group_control_work_variant_id) + """ + classSubjectControlWorkVariantId: ID! +} + +"""Механика назначения (учитель/ученик, система/ученик, etc.)""" +type AssignmentType { + """""" + id: Int! + + """""" + name: String! +} + +"""""" +type AssistantDisplayType { + """Тип отображения Ассистента""" + assistantType: AssistantType! + + """Позиция картинки Ассистента""" + assistantPosition: AssistantPosition! +} + +"""""" +type AssistantDisplayType3D { + """Тип анимации Ассистента""" + assistantType3D: AssistantType3D! + + """Состояние ассистента (для выбора текста)""" + assistantState3D: AssistantState! +} + +"""""" +enum AssistantPosition { + """""" + UP + + """""" + RIGHT +} + +"""""" +enum AssistantState { + """""" + MODULE_LANDING_WITH_MT + + """""" + MODULE_LANDING_WITHOUT_MT + + """""" + MODULE_LANDING_OFF_PLAN_WITH_MT + + """""" + MODULE_LANDING_OFF_PLAN_WITHOUT_MT + + """""" + MODULE_ERROR + + """уже неактуален""" + MODULE_NO_TASKS_NO_MAIL + + """""" + MODULE_NO_TASKS_WITH_MAIL + + """""" + MODULE_LANDING_HARD_DEADLINE_WITH_MT + + """""" + MODULE_LANDING_HARD_DEADLINE_WITHOUT_MT + + """""" + MODULE_LANDING_NOT_MUCH_TIME_LEFT + + """уже неактуален""" + MODULE_LANDING_NOT_MUCH_TIME_LEFT_WITH_MT + + """""" + MODULE_LANDING_NOT_MUCH_TIME_LEFT_WITHOUT_MT + + """""" + MODULE_WITH_TRAJECTORY_NOT_MUCH_TIME_LEFT + + """""" + MODULE_LANDING_SOFT_NO_TIME + + """""" + MODULE_WITH_TRAJECTORY_SOFT_NO_TIME + + """""" + MODULE_HARD_NO_TIME + + """""" + MODULE_IN_PROGRESS + + """""" + MODULE_FINISHED_AUTO + + """""" + MODULE_FINISHED_AUTO_WITHOUT_REPORT_WITHOUT_REFLECTION + + """""" + MODULE_FINISHED_AUTO_WITHOUT_REPORT + + """""" + MODULE_FINISHED_AUTO_WITHOUT_REFLECTION + + """""" + MODULE_FINISHED_BY_TEST + + """""" + MODULE_FINISHED_BY_TEST_WITHOUT_REPORT_WITHOUT_REFLECTION + + """""" + MODULE_FINISHED_BY_TEST_WITHOUT_REPORT + + """""" + MODULE_FINISHED_BY_TEST_WITHOUT_REFLECTION + + """""" + MODULE_FINISHED_BY_TEACHER + + """""" + MODULE_FINISHED_BY_TEACHER_WITHOUT_REPORT + + """""" + MODULE_FINISHED_BY_TEACHER_WITH_COMMENT + + """""" + MODULE_FINISHED_BY_TEACHER_WITH_COMMENT_WITHOUT_REPORT + + """""" + MODULE_LEVEL_FINISHED + + """""" + LEVEL_NEW_CHOICE + + """""" + LEVEL_FIRST_CHOICE_WITH_MT + + """""" + LEVEL_FIRST_CHOICE_WITHOUT_MT + + """""" + LEVEL_ERROR + + """уже неактуален""" + GE_ERROR + + """уже неактуален""" + GE_START_WITH_ESSENTIAL + + """""" + GE_START_WITH_ESSENTIAL_NO_ADDITIONAL + + """""" + GE_START_WITH_ESSENTIAL_AND_ADDITIONAL + + """""" + GE_FINISHED_GO_NEXT + + """""" + GE_COMPLETED_THREE_IN_ROW + + """""" + GE_FAILED_THREE_IN_ROW + + """""" + GE_FINISH_IS_SOON + + """""" + GE_FINISHED_LEVEL_COMPLETE + + """уже неактуален""" + GE_NOT_FINISHED_LEVEL_COMPLETE + + """уже неактуален""" + GE_FINISHED_LEVEL_COMPLETE_GO_NEXT + + """""" + GE_FINISHED_LEVEL_COMPLETE_MODULE_FINISHED +} + +"""GE - goal element - Элемент Цели""" +enum AssistantType { + """""" + FIRST_BASE_GE + + """""" + LAST_BASE_GE + + """""" + FIRST_CONFIDENT_GE + + """""" + LAST_CONFIDENT_GE + + """""" + FIRST_RECOMMENDED_CONFIDENT_GE + + """""" + FINISH_ADVANCED_GE + + """""" + EASY_TO_FINISH + + """""" + LEVEL_IS_ALMOST_DONE + + """""" + NOT_MUCH_LEFT + + """""" + KEEP_IT_UP + + """""" + GOING_COOL + + """""" + YOU_ARE_SMART_AND_NOT_MUCH_LEFT + + """""" + YOU_ARE_SMART + + """""" + COOL_PROGRESS + + """""" + GOING_BY_PLAN + + """""" + NEXT_GOAL + + """""" + NEXT_EASY_GOAL +} + +"""""" +enum AssistantType3D { + """""" + ASSISTANT_HIGH_FIVE + + """""" + ASSISTANT_THINKING + + """""" + ASSISTANT_NERVOUS + + """""" + ASSISTANT_FACEPALM + + """""" + ASSISTANT_CRY + + """""" + ASSISTANT_HEART + + """""" + ASSISTANT_HAPPY_JUMP + + """""" + ASSISTANT_KISSING + + """""" + ASSISTANT_SHREK_EYES + + """""" + ASSISTANT_COOL + + """""" + ASSISTANT_APPLAUSE + + """""" + ASSISTANT_OK +} + +"""Информация о группе асинхронных задач публикации программы/направления""" +type AsyncExecutionData { + """Идентификатор группы асинхронных задач на публикацию""" + taskGroupId: ID! + + """Статистическая информация о задачах группы""" + taskByStatuses: [AsyncTasksStatusCount!]! + + """Процент завершенных асинхронных задач по группе задач""" + percent: Float! +} + +"""""" +type AsyncReport { + """""" + reportId: Int! + + """""" + columns: [AsyncReportColumn!]! + + """""" + rows: [JsonNode!]! +} + +"""""" +type AsyncReportColumn { + """""" + name: String! + + """""" + description: String! + + """""" + type: AsyncReportParamType + + """""" + childColumnNames: [String!] +} + +"""""" +enum AsyncReportGroup { + """""" + USERS_ACTIVITY + + """""" + CONTENT + + """""" + DISCOVER_UNKNOWN_2021 +} + +"""""" +input AsyncReportInputParamModel { + """""" + name: String! + + """""" + value: String! + + """""" + val: String +} + +"""Элемент списка отчетов""" +type AsyncReportItem { + """""" + reportId: Int! + + """""" + type: AsyncReportName! + + """""" + created: DateTime! + + """""" + userName: String! + + """""" + description: String! + + """""" + parameters: [ParamValue!]! + + """""" + status: AsyncReportStatus! + + """""" + modified: DateTime + + """""" + excelFile: String + + """""" + mailingId: Int @deprecated(reason: "Use scheduleId") + + """""" + scheduleId: Int + + """""" + batchJobId: String + + """""" + scheduleStatus: AsyncReportMailingStatus! +} + +"""""" +type AsyncReportMailingStatus { + """""" + statusTime: DateTime! + + """""" + status: String! + + """""" + statusCode: AsyncReportScheduleStatusEnum! +} + +"""""" +type AsyncReportMailingStatusByUsers { + """""" + userToId: UUID! + + """""" + statusTime: DateTime! + + """""" + status: String! +} + +"""Мутаторы асинхронных отчетов""" +type AsyncReportMutations { + """Отправить список событий""" + createAsyncReport(report: AsyncReportName, params: [AsyncReportInputParamModel!]!, currentRole: String): AsyncReportResponse! + + """false если отчет уже удален.""" + deleteAsyncReport(reportId: Int!): Boolean + + """Рассылка отчета пользователям""" + sendReportToUsers(asyncReportId: Int!, userIds: [UUID!]!): Int! + + """Повторная отправка отчета пользователю""" + sendReportToUser(asyncReportId: Int!, userId: UUID!): Int! + + """Создать рассылку асинхронных отчетов""" + createReportSchedule(name: String!, scheduleCron: ScheduleCron!, reportType: AsyncReportName!, params: [AsyncReportInputParamModel!]!, firstRun: DateTime!, lastRun: DateTime!, recipients: [UUID!]!, currentRole: String): Int! + + """Обновить рассылку асинхронных отчетов""" + updateReportSchedule(reportScheduleId: Int!, name: String!, reportType: AsyncReportName!, params: [AsyncReportInputParamModel!]!, firstRun: DateTime!, lastRun: DateTime!, recipientsToAdd: [UUID!], recipientsToRemove: [UUID!]): Boolean! + + """Обновить список получателей рассылки асинхронных отчетов""" + updateReportScheduleRecipients(reportScheduleId: Int!, recipientsToAdd: [UUID!], recipientsToRemove: [UUID!]): Boolean! + + """Запуск рассылки""" + startSchedule(reportScheduleId: Int!): Boolean! + + """Приостановка рассылки""" + pauseSchedule(reportScheduleId: Int!): Boolean! + + """Удаление рассылки""" + deleteSchedule(reportScheduleId: Int!): Boolean! +} + +"""""" +enum AsyncReportName { + """""" + SCHOOL_USERS_ACTIVITY + + """""" + SCHOOLS_ACTIVITY + + """""" + MODULES_USAGES + + """""" + TASK_SKILLS + + """""" + SCHOOLS_ACTIVITY_BY_REGIONS + + """""" + SCHOOL_USERS_MONITORING_BY_REGIONS + + """""" + SCHOOLS_ACTIVITY_SUMMARY_STATISTICS + + """""" + CLASSES_AND_SUBJECTS_STATISTICS + + """""" + DISCOVER_UNKNOWN_2021_TASKS + + """""" + DISCOVER_UNKNOWN_2021_STUDENTS + + """""" + DISCOVER_UNKNOWN_2021_TEACHERS + + """""" + DISCOVER_UNKNOWN_2021_SCHOOLS + + """""" + PROSVESHCHENIYE_CONTENT_CREATION_STATISTICS +} + +"""""" +type AsyncReportNameModel { + """""" + asyncReportName: AsyncReportName! + + """""" + description: String! + + """""" + asyncReportGroup: AsyncReportGroup! + + """""" + groupDescription: String! +} + +"""""" +type AsyncReportParamModel { + """""" + defaultValue: String + + """""" + paramName: String! + + """""" + description: String! + + """""" + required: Boolean + + """""" + typeName: AsyncReportParamType! +} + +"""""" +enum AsyncReportParamType { + """""" + NUMBER + + """""" + STRING + + """""" + TIMESTAMP + + """""" + BOOL + + """""" + SCHOOL_TAGS + + """""" + SCHOOL_TAGS_REGION + + """""" + STAGES + + """""" + SUBJECTS + + """""" + REGIONS + + """""" + SCHOOLS_REGION + + """""" + SCHOOLS + + """""" + LEARNING_PROGRAM_COMPETITIONS + + """""" + BOOKS +} + +"""Резолверы асинхронных отчетов""" +type AsyncReportQueries { + """Получение параметров отчета""" + getAsyncReportParams(reportName: AsyncReportName!): [AsyncReportParamModel!]! + + """Получение списка описаний отчетов""" + getAsyncReportNames(asyncReportGroup: AsyncReportGroup): [AsyncReportNameModel!]! + + """Асихронные отчеты""" + getAsyncReport(reportId: Int!): AsyncReport! + + """Асихронные отчеты""" + getAsyncReportItem(reportId: Int!): AsyncReportItem! + + """Асихронные отчеты""" + getAsyncReports(reportType: AsyncReportName, asyncReportGroup: AsyncReportGroup, currentRole: String): [AsyncReportItem!]! + + """Получить статусы рассылок отчета в разрезе адресатов""" + getAsyncReportMailingStatuses(reportId: Int!): [AsyncReportMailingStatusByUsers!]! @deprecated + + """Получить консолидированный статус рассылки отчета""" + getAsyncReportMailingStatus(reportId: Int!): AsyncReportMailingStatus @deprecated + + """Получить статусы рассылок отчета в разрезе адресатов""" + getAsyncReportScheduleStatuses(reportId: Int!): [AsyncReportScheduleStatusByUser!]! + + """Получить консолидированный статус рассылки отчета""" + getAsyncReportScheduleStatus(reportId: Int!): AsyncReportMailingStatus + + """Получить расписания рассылок""" + getAsyncReportSchedules(reportType: AsyncReportName): [AsyncReportSchedule!]! + + """Получить новое расписание""" + getNewAsyncReportSchedule(reportName: AsyncReportName!): AsyncReportSchedule! + + """Получить существующее расписание""" + getAsyncReportSchedule(reportScheduleId: Int!): AsyncReportSchedule! + + """Получить историю формирований отчетов по расписанию""" + getAsyncReportScheduleHistory(reportScheduleId: Int!): [AsyncReportItem!]! +} + +"""""" +type AsyncReportRecipient { + """""" + userId: UUID! + + """""" + fio: String! + + """""" + email: String +} + +"""""" +type AsyncReportResponse { + """""" + report: AsyncReportItem + + """""" + errors: [String!]! +} + +"""""" +type AsyncReportSchedule { + """""" + scheduleId: Int + + """""" + name: String! + + """""" + created: DateTime + + """""" + firstRun: DateTime! + + """""" + nextRun: DateTime + + """""" + paramModels: [AsyncReportParamModel!] + + """""" + nextRunParams: [ParamValue!]! + + """""" + lastRun: DateTime + + """""" + state: AsyncReportScheduleState + + """""" + batchJobId: String + + """""" + reportType: String! + + """""" + recipients: [AsyncReportRecipient!]! +} + +"""""" +enum AsyncReportScheduleState { + """Активно""" + ACTIVE + + """Приостановлено""" + PAUSED + + """Закрыто""" + CLOSED + + """В архиве""" + ARCHIVED +} + +"""""" +type AsyncReportScheduleStatusByUser { + """""" + userTo: AsyncReportRecipient! + + """""" + statusTime: DateTime! + + """""" + status: AsyncReportScheduleStatusByUserEnum! +} + +"""""" +enum AsyncReportScheduleStatusByUserEnum { + """Создано""" + NEW + + """Успешно выполнено""" + SENT + + """Ошибка рассылки""" + ERROR + + """Статус отправки писем не отслеживается""" + STATUS_MONITORING_DISABLED + + """ + Email-сервис не вернул информацию по пользователю, письмо не отправлялось + """ + WARNING +} + +"""""" +enum AsyncReportScheduleStatusEnum { + """Рассылка еще не проводилась""" + NEW + + """ + Рассылка была инициирована, но статус от email-service пуст, например выключен канал email + """ + WARNING + + """Успешно выполнено""" + SUCCESS + + """В процессе рассылки""" + IN_PROGRESS + + """Ошибка рассылки""" + ERROR + + """Статус отправки писем не отслеживается""" + STATUS_MONITORING_DISABLED +} + +"""""" +enum AsyncReportStatus { + """Ожидает""" + WAITING + + """В работе""" + WORKING + + """Готов""" + COMPLETE + + """Ошибка""" + ERROR + + """В архиве""" + ARCHIVED +} + +"""Модель асинхронной задачи""" +type AsyncTask { + """Уникальный UUID асинхронной задачи""" + asyncTaskId: UUID! + + """Тип асинхронной задачи""" + payloadType: String! + + """Текущий статус""" + status: AsyncTaskStatus! + + """Сообщение ошибки, если задание завершилось не успешно""" + errorMessage: String + + """UUID связаной сущности""" + entityUuid: UUID + + """ИД связаной сущности""" + entityId: ID + + """ID группы задач""" + taskGroupId: UUID + + """Пользователь, создавший задачу""" + user: User! + + """UUID школы по которой создали асинхронную задачу""" + schoolId: UUID + + """дата и время создания асинхронной задачи""" + createTs: DateTime! + + """дата и время последнего обновления асинхронной задачи""" + updateTs: DateTime! +} + +"""""" +enum AsyncTaskStatus { + """В очереди""" + QUEUED + + """Выполняется""" + PROCESSING + + """Успешно""" + SUCCESS + + """Ошибка""" + ERROR +} + +""" +Элемент группировки асинхронных задач по статусу на количество задач в этом статусе +""" +type AsyncTasksStatusCount { + """Статус асинхронной задачи""" + status: AsyncTaskStatus! + + """Количество задач в данном статусе""" + count: Int! +} + +"""Протокол по попытке""" +type AttemptCheckDetailInfo { + """Идентификатор отчета о попытке""" + studentGoalAttemptId: ID! + + """Номер попытки""" + attemptNumber: Int! + + """Логин студента""" + studentLogin: String! + + """Информация о проверяемых""" + verifiableUsers: VerifiableUsers! + + """Идентификатор проекта""" + goalId: ID! + + """Название проекта""" + projectName: String! + + """Версия протокола подсчета оценки за авто""" + assessmentProtocolVersion: Int + + """Протокол подсчета оценки за авто (json)""" + assessmentProtocolMeta: String + + """Список ответов по вопросам обратной связи студента""" + studentFeedbackResults: [StudentFeedbackResult!] + + """Статус студенческого ответа""" + studentFeedbackStatus: StudentFeedbackStatusEnum + + """Информация об ответе студента (gitlab/platform)""" + solutionInfo: SolutionInfo + + """Дата и время попытки""" + resultDate: DateTime +} + +"""Справочник формул подсчета оценки при повторном прохождение проекта""" +enum AttemptCountingFormulaEnum { + """Минимальная""" + MIN + + """Максимальная""" + MAX + + """Последняя""" + LAST + + """Средняя""" + AVERAGE +} + +""" +Модель, содержащая информацию о попытке прохождения проекта вместе с проверками +""" +type AttemptWithChecks { + """Идентификатор попытки выполнения проекта""" + studentGoalAttemptId: ID! + + """ + Идентификатор ответа. Null в случае, если проект зафейлен до старта проекта + """ + studentAnswerId: ID + + """ + Процент за прохождение попытки. Null в случае, если оценка еще не посчитана + """ + resultPercentage: Int + + """ + Оценка в пересчете на опыт. Null в случае, если оценка еще не посчитана + """ + resultExperience: Int + + """ + Формула подсчета итогового балла за все проверки. + Null в случае, когда формула на момент завершения проверки не сохранялась + """ + attemptCalculationFormula: CountingFormulaType + + """ + Процент, который необходимо набрать чтобы задание считалось выполненным + Null в случае, когда процент на момент завершения проверки не сохранялся + """ + percentageOfCompletion: Int + + """Информация о проверяемых""" + verifiableUsers: VerifiableUsers! + + """Информация за p2p-блок проверки. Null если p2p не настроен""" + p2pCheckInfo: P2pCheckInfo + + """Информация за авто-блок проверки. Null если авто-проверка не настроен""" + autoCheckInfo: AutoCheckInfo + + """Информация за блок проверки код-ревью. Null если код-ревью не настроен""" + codeReviewInfo: CodeReviewInfo + + """ + Информация по решению при типе загрузки Platf. Null если тип загрузки Gitlab или если проект зафейлен до старта + """ + solutionInfo: SolutionInfo! +} + +"""""" +type AttendanceAndAchievementQueries { + """""" + getScheduleEventsVisitJournalInfo( + """параметр начала диапазона дат для выборки Уроков (в зоне школы)""" + lessonsFromDate: Date! + + """параметр окончания диапазона дат для выборки Уроков (в зоне школы)""" + lessonsToDate: Date! + + """значения журнала посещаемости которые не возвращать в ответе""" + excludeVisitJournalValues: [VisitJournalCellValueEnum!] + + """Id предметов""" + subjectIds: [ID!] + + """идентификатор пользователя Ученика""" + childUserId: ID + ): ScheduleEventsVisitJournalInfoResponse! +} + +"""Количество уроков для соответствующего статуса посещения""" +type AttendanceStateStatistics { + """Состояние (статус) посещения урока""" + state: VisitJournalCellValueEnum! + + """Количество уроков для состояния""" + numberOfLessons: Int! +} + +"""Модель аттестационного периода""" +type AttestationPeriod { + """Идентификатор периода""" + periodId: ID! + + """Наименование периода""" + periodName: String! + + """Идентификатор типа периода (АП или УП)""" + periodTypeId: ID! + + """Тип периода (АП или УП)""" + periodType: FinalPeriodType! + + """Дата начала""" + startDate: Date! + + """Дата окончания""" + endDate: Date! +} + +"""Даты аттестационного периода""" +type AttestationPeriodDatesResponse { + """Данные""" + data: VisitLessonPeriod + + """Успешность операции""" + isSuccess: Boolean! + + """Ошибки""" + error: VisitLessonStatError +} + +"""Итоговая оценка за АП""" +type AttestationPeriodFinalMark { + """Идентификатор аттестационного периода""" + periodId: ID! + + """Значение оценки GovernmentMark#customMarkName""" + mark: String + + """СРВ""" + midWeightMark: String +} + +"""""" +input AttestationPeriodInputModel { + """id аттестационного периода""" + id: ID + + """название""" + name: String! + + """дата начала""" + startDate: Date! + + """дата начала""" + endDate: Date! + + """дата закрытия модулей""" + closeModuleDate: Date! +} + +"""""" +type AttestationPeriodMarkMutations { + """Создать внешнюю работу""" + createExternalWork(externalWorkInput: ExternalWorkInput!): StudentInSubgroup! + + """Создать внешнюю работу (вариант c полем periodTypeId: ID )""" + createExternalWorkV2(externalWorkV2Input: ExternalWorkV2Input!): StudentInSubgroup! + + """Создать и тиражировать внешнюю работу на всех учеников в классе""" + createExternalWorkForClassSubject(classSubjectId: ID!, attestationPeriodId: ID!, attestationPeriodTypeId: ID, name: String!): [StudentStageSubjectStudyPeriod]! + + """Удалить внешнюю работу""" + removeExternalWork(externalWorkId: ID!): StudentInSubgroup! + + """Добавить файл во внешнюю работу""" + attachExternalWorkFile(externalWorkId: ID!, fileInput: FileInput!): ExternalWork! + + """Удалить файл из внешней работы""" + removeExternalWorkFile(fileId: ID!): ID! + + """Переименовать внешнюю работу""" + changeExternalWorkName(externalWorkId: ID!, externalWorkName: String!): ExternalWork! + + """ + Установить оценку за модуль + setStudentModuleMark(studentId: ID!, moduleId: ID!, markId: ID) : StudentModule! + Установить оценку за внешнюю работу + """ + setExternalWorkMark(externalWorkId: ID!, percentageMark: Float, markId: ID): StudentInSubgroup! + + """Установить оценку""" + setStudentStageSubjectStudyPeriodMark(studentId: ID!, stageSubjectId: ID!, attestationPeriodId: ID!, attestationPeriodTypeId: ID, markId: ID): StudentInSubgroup! + + """ + Производит пересчет показателей успеваемости для текущих учеников ГКпП за переданный аттестационный период. + """ + recalculateAndUpdateAcademicPerformanceOfStageSubjectGroupStudents(stageSubjectGroupId: ID!, attestationPeriodId: ID!): Boolean! + + """ + Производит перерасчет показателей успеваемости для ученика по предмету за аттестационный период + """ + recalculateAndUpdateAcademicPerformanceOfStudentBySubject(studentId: ID!, stageSubjectGroupId: ID!, attestationPeriodId: ID!): Boolean! +} + +"""""" +type AttestationPeriodMarkQueries { + """Получение данных по гкпп""" + getStageSubjectGroupInfo(stageSubjectGroupId: ID!): StageSubjectGroupInfoForMarks! + + """Получение данных о прогрессе и оценках по ГКпП""" + getAttestationPeriodMarks(attestationPeriodMarksRequestInput: AttestationPeriodMarksRequestInput): ClassSubject! + + """Получение данных о прогрессе и оценках по студенту""" + getAttestationPeriodStudentMarks(attestationPeriodMarksRequestInput: AttestationPeriodMarksRequestInput): ClassSubject! + + """набор оценок, принятых в школе""" + getSchoolMarks: [SchoolMark!]! +} + +"""""" +input AttestationPeriodMarksRequestInput { + """""" + stageSubjectGroupId: ID! + + """""" + periodId: ID + + """""" + studentId: ID +} + +"""Аттестационный период""" +type AttestationPeriodModel { + """id аттестационного периода""" + id: ID! + + """название""" + name: String! + + """дата начала""" + startDate: Date! + + """дата окончания""" + endDate: Date! + + """дата закрытия модулей""" + closeModuleDate: Date! +} + +"""""" +type AttestationPeriodMutations { + """Создание графика аттестационных периодов""" + createAttestationPeriodSet(attestationPeriodSet: AttestationPeriodSetInputModel!): AttestationPeriodSetModel! + + """Изменение графика аттестационных периодов""" + changeAttestationPeriodSet(attestationPeriodSet: AttestationPeriodSetInputModel!): AttestationPeriodSetModel! + + """Удаление графика аттестационных периодов""" + deleteAttestationPeriodSet(attestationPeriodSetId: ID!): Boolean + + """Создание/изменение ячейки таблицы аттестационных периодов""" + changeStageSubjectGroupAttestation(stageSubjectGroupAttestation: [StageSubjectGroupAttestationInputModel!]!): [StageSubjectGroupAttestationEntryModel!]! +} + +"""""" +type AttestationPeriodQueries { + """Получение ячеек таблицы аттестационных периодов""" + getStageSubjectGroupAttestations(stageId: ID!, academicYearId: ID!): [StageSubjectGroupAttestationEntryModel!]! + + """Получение графиков аттестационных периодов""" + getAttestationPeriodSets(academicYearId: ID!): [AttestationPeriodSetModel!]! + + """Кастомная кверя получения актуальных предметов для параллели""" + getSubjectsByStage(stageId: ID!, academicYearId: ID!): [Subject!]! + + """Получение Атестационных Периодов по предметам для Ученика""" + getCurrentAcademicYearAttestation(childUserId: ID): AttestationPeriodSetResponse! +} + +"""""" +enum AttestationPeriodResponseCode { + """Не найден Класс ученика""" + STAGE_GROUP_NOT_FOUND + + """Не найдены активные ГПП ученика""" + ACTIVE_STAGE_SUBJECT_GROUP_NOT_FOUND + + """Не найдены Учебные периоды ученика""" + STUDY_PERIODS_NOT_FOUND + + """""" + OK + + """ + статус обозначающий общую ошибку. Заведен для использования в responseCode + """ + ERROR +} + +"""Итоговые оценки по графикам аттестационных периодов""" +type AttestationPeriodSetFinalMarks { + """Аттестационные периоды в наборе""" + attestationPeriods: [EJournalFinalPeriod!]! + + """Итоговые оценки по предмету параллели""" + stageSubjectMarks: [StageSubjectFinalMarks!]! +} + +"""""" +input AttestationPeriodSetInputModel { + """id графика""" + id: ID + + """название""" + name: String! + + """аббревиатура""" + shortName: String + + """аттестационные периоды""" + attestationPeriods: [AttestationPeriodInputModel!]! + + """идентификатор учебного года для которого определен график.""" + academicYearId: ID! +} + +"""График аттестационных периодов""" +type AttestationPeriodSetModel { + """id графика""" + id: ID! + + """название""" + name: String! + + """аббревиатура""" + shortName: String + + """проверка назначен ли график""" + assigned: Boolean! + + """аттестационные периоды""" + attestationPeriods: [AttestationPeriodModel!]! + + """идентификатор учебного года для которого определен график.""" + academicYearId: ID +} + +"""""" +type AttestationPeriodSetResponse { + """""" + attestationPeriodSetWithStageSubjectGroups: [AttestationPeriodSetWithStageSubjectGroups!]! @deprecated(reason: "Использовать responseCodes ") + + """""" + responseCode: AttestationPeriodResponseCode! + + """""" + responseCodes: [AttestationPeriodResponseCode!]! +} + +"""Итоговые оценки по графикам аттестационных периодов""" +type AttestationPeriodSetStatisticsMarks { + """Аттестационные периоды в наборе""" + attestationPeriods: [EJournalFinalPeriod!]! + + """Итоговые оценки по предмету параллели""" + stageSubjectMarks: [StageSubjectStatisticsMarks!]! +} + +"""""" +type AttestationPeriodSetWithStageSubjectGroups { + """""" + attestationType: AttestationTypeModel! + + """""" + attestationPeriodSet: AttestationPeriodSetModel! + + """""" + stageSubjectGroupAttestationPeriods: [StageSubjectGroupAttestationModel!]! +} + +"""Итоговая оценка за АП""" +type AttestationPeriodStatisticsMark { + """Идентификатор аттестационного периода""" + periodId: ID! + + """Значение оценки GovernmentMark#customMarkName""" + mark: String + + """СРВ""" + midWeightMark: String +} + +"""Типы аттестации""" +enum AttestationTypeModel { + """По учебным периодам""" + BY_STUDY_PERIODS + + """По модулям КТП""" + BY_MODULES + + """По аттестационным периодам""" + BY_ATTESTATION_PERIODS +} + +"""""" +type AuditMessage { + """Идентификатор записи журнала аудита""" + auditMessageId: ID! + + """""" + message: String! + + """Уникальный код события журнала аудита""" + operationCode: String! + + """Человекопонятное описание события журнала аудита""" + operationDescription: String! + + """Признак успешно выполненного действия пользователя""" + isSuccess: Boolean! + + """Классификация действий пользователя""" + action: AuditOperationAction! + + """тип аудируемой сущности""" + entityTypeCode: String + + """идентификатор аудируемой сущности""" + entityId: String + + """Идентификатор клиентского запроса""" + clientRequestId: String! + + """""" + schoolId: ID + + """""" + userId: ID! + + """""" + userLogin: String! + + """""" + userFullName: String! + + """Ид рабочего места пользователя, взято из куки""" + workplaceId: String! + + """""" + createTs: DateTime! + + """Идентификатор имперсонатора в Keycloak""" + impersonatorUserId: String + + """Логин имперсонатора в Keycloak""" + impersonatorUserLogin: String +} + +"""Тип действий для аудита""" +enum AuditOperationAction { + """""" + CREATE + + """""" + READ + + """""" + UPDATE + + """""" + DELETE +} + +"""""" +type AuditOperationType { + """Уникальный код события журнала аудита""" + code: String! + + """Человекопонятное описание события журнала аудита""" + description: String! + + """Классификация действий пользователя""" + action: AuditOperationAction! +} + +"""""" +type AuditRecordsResponse { + """количество записей""" + count: Int! + + """""" + records: [AuditMessage!]! +} + +"""""" +type AuditableEntityType { + """Уникальный код сущности""" + code: String! + + """Имя сущности, которое можно отобразить пользователю""" + name: String! +} + +"""Автор учебного контента""" +type Author { + """""" + id: ID! + + """Имя""" + firstName: String + + """Фамилия""" + lastName: String + + """Отчетство""" + middleName: String +} + +"""Информация о блоке за авто-проверку""" +type AutoCheckInfo { + """Идентификатор авто-проверки""" + autoCheckReportId: ID! + + """Фактический процент выполнения авто-проверки""" + receivedPercentage: Int! + + """Содержит время завершения авто-проверки""" + endTimeCheck: DateTime! +} + +"""Протокол по авто проверке""" +type AutoCheckReportDetailInfo { + """Идентификатор отчета об авто проверке""" + autoCheckReportId: ID! + + """Текстовый результат автоматической проверки""" + resultInfo: String + + """Версия протокола подсчета оценки за авто""" + assessmentProtocolVersion: Int + + """Протокол подсчета оценки за авто (json)""" + assessmentProtocolMeta: String +} + +"""Информация об auto проверке по проекту""" +type AutoEvaluationInfo { + """Статус проверки""" + status: ProjectEvaluationStatus! + + """Процент выполнения автопроверки""" + receivedPercentage: Int! + + """Фактическое время окончания автопроверки, если она была проведена""" + endTimeCheck: DateTime + + """результат автопроверки""" + resultInfo: String +} + +"""Информация о весах автотестов""" +type AutotestInfo { + """Автотест и его вес""" + autotests: [AutotestWithWeight!]! + + """Категория секции""" + kindQuestion: KindQuestion! +} + +"""Автотест и его вес""" +type AutotestWithWeight { + """Идентификатор автотеста""" + id: ID! + + """Наименование теста""" + name: String + + """Вес автотеста""" + weight: Int! +} + +"""Автотест и его вес""" +input AutotestWithWeightInput { + """Идентификатор автотеста""" + id: ID! + + """Вес автотеста""" + weight: Int! +} + +"""Класс, на который можно назначить курс""" +type AvailableClassForAssignmentCourse { + """Идентификатор группы класса по предмету""" + stageSubjectGroupId: ID! + + """Название класса, на который можно назначить курс""" + className: String! + + """Идентификатор параллели, к которой привязан класс""" + stageId: ID! + + """Название параллели, к которой привязан класс""" + stageName: String! + + """Флаг, назначен ли курс уже на группу класса по предмету""" + isAssigned: Boolean +} + +"""""" +type AvailableCodeReviews { + """""" + codeReviews: [CodeReview!]! + + """""" + limitInfo: CodeReviewLimitInfo! +} + +"""Доступные области видимости и пресеты""" +type AvailableScopes { + """""" + scopes: [ScopeEnum!]! + + """""" + scopePresets: [ScopePresetEnum!]! @deprecated(reason: "Не используется в бизнес-логике") +} + +"""""" +type AvailableTimeZone { + """""" + zoneId: String! + + """""" + zoneName: String! +} + +"""Аватар""" +type Avatar { + """Id аватара""" + id: ID! + + """Размер аватара (Low-grade,Middle-grade,High-grade)""" + avatarKind: AvatarKind! + + """ + Категория аватара (Великие люди, Великие изобретения, Великие открытия) + """ + avatarGroup: AvatarGroup! + + """Название аватара""" + name: String! + + """Цена аватара, 0 если бесплатный""" + price: Int! + + """признак того, что этот аватар у юзера уже есть""" + userGotIt: Boolean! + + """Школа в которой заведен этот аватар или null, если аватар глобальный""" + schoolId: UUID + + """Ссылка на аватар""" + url: String! +} + +""" +Категория аватара (Великие люди, Великие изобретения, Великие открытия) +""" +type AvatarGroup { + """""" + id: ID! + + """""" + name: String! +} + +"""Создание/изменений стикеров""" +input AvatarInput { + """Наименование бейджа""" + name: String! + + """Размер стикера""" + avatarKindId: Int! + + """ + Категория стикера (Великие люди, Великие изобретения, Великие открытия) + """ + avatarGroupId: Int! + + """Ссылка на изображение стикера""" + url: String! +} + +"""Размер аватара (Аватар маленьких/средних/больших размеров)""" +type AvatarKind { + """""" + id: ID! + + """""" + name: String! +} + +"""Информация о средней посещаемости за неделю/месяц""" +type AverageLogtime { + """Средняя посещаемость за неделю (в секундах)""" + week: Int! + + """Средняя посещаемость за месяц (в секундах)""" + month: Int! + + """Средняя посещаемость в неделю за месяц (в секундах)""" + weekPerMonth: Int! +} + +"""Награда (Ачивка)""" +type Award { + """""" + id: ID! + + """Тип награды""" + awardType: AwardTypeEnum! + + """Условие получения награды""" + awardCondition: AwardCondition! + + """Школа в которой заведена награда""" + schoolId: ID + + """Механика назначения (учитель/ученик, система/ученик, etc.)""" + assignments: [AwardAssignmentType!]! + + """Сколько очков добавляется при апдейте""" + pointsToAdd: Int! + + """ + Бейдж + не {null} если {awardType=BADGE} + """ + badge: Badge + + """ + Экипировка + не {null} если {awardType=EQUIPMENT} + """ + equipment: Equipment + + """Сколько печенек начисляется за получение награды""" + cookies: Int! @deprecated(reason: "Use awardBounties. Will be deleted in r/24.0.0") + + """Сколько очков опыта начисляется за получение награды""" + experienceValue: Int! @deprecated(reason: "Use awardBounties. Will be deleted in r/24.0.0") + + """Сколько игровой валюты начисляется за получение награды""" + coins: Int! @deprecated(reason: "Use awardBounties. Will be deleted in r/24.0.0") + + """Дата создания награды""" + createdTs: DateTime! + + """Дата редактирования награды""" + updatedTs: DateTime + + """Награда активна""" + isActive: Boolean! + + """Школа, в которой заведена награда. {null} если награда глобальная""" + school: SafeSchool + + """Вознаграждение за награду""" + awardBounties: [AwardBounty!]! + + """ + Кол-во выданных наград в рамках кампуса(или продукта). Доступно только при запросе getAwards из-под ba, sa + """ + rewardCount: Int +} + +"""Способ назначения конкретной награды""" +type AwardAssignmentType { + """ID способа""" + id: Int! + + """включен ли способ выдачи для награды""" + enabled: Boolean! + + """наименование""" + name: String! +} + +"""Вознаграждение за получение награды в разрезе уровней""" +type AwardBounty { + """Идентификатор вознаграждения""" + awardBountyId: ID! + + """ + Уровень при котором выдается вознаграждение. NULL если выдается за все уровни + """ + awardLevelId: Int + + """Печеньки/Evaluation Points""" + cookies: Int! + + """Wallets""" + coins: Int! + + """Очки опыта / XP""" + experienceValue: Int! + + """Баллы коалиции""" + coalitionPoints: Int! + + """Code Review Points""" + crpValue: Int! + + """Прокачка навыков""" + softSkillPowers: [AwardBountySoftSkillPower!]! + + """метрики для достижения уровня награды""" + awardMetricConditions: [AwardMetricCondition!]! + + """Описание уровня награды (ранга)""" + description: String +} + +"""Вознаграждение за получение награды в разрезе уровней""" +input AwardBountyInput { + """ + Уровень при котором выдается вознаграждение. NULL если выдается за все уровни + """ + awardLevelId: Int + + """Печеньки/Evaluation Points""" + coins: Int! + + """Wallets""" + cookies: Int! + + """Очки опыта""" + experienceValue: Int! + + """Баллы коалиции""" + coalitionPoints: Int + + """Code Review Points""" + crpValue: Int + + """Описание уровня награды (ранга)""" + description: String + + """Прокачка навыков""" + softSkillPowers: [AwardBountySoftSkillPowerInput!]! +} + +"""Сколько мягких навыков выдается при получении вознаграждения""" +type AwardBountySoftSkillPower { + """ID софт скилла""" + softSkillId: Int! + + """Выдаваемое кол-во софт скилла""" + power: Int! + + """Софт скилл""" + softSkill: SoftSkillType! +} + +"""Сколько мягких навыков выдается при получении вознаграждения""" +input AwardBountySoftSkillPowerInput { + """ID софт скилла""" + softSkillId: Int! + + """Выдаваемое кол-во софт скилла""" + power: Int! +} + +"""Условия получения награды""" +type AwardCondition { + """""" + id: Int! + + """Человек-читаемое описание условия""" + description: String! +} + +"""Справочник уровней наград""" +type AwardLevel { + """Число уровня""" + awardLevelId: Int! + + """Название уровня""" + awardLevelName: String! +} + +"""""" +type AwardMetricCondition { + """Уникальный ID""" + awardMetricConditionId: ID! + + """ID награды""" + awardId: ID! + + """Метрика""" + metricId: Int! + + """Требуемое значение метрики для выдачи награды""" + requiredPower: Int! + + """Требуемое значение метрики для выдачи награды""" + awardLevel: Int! +} + +"""""" +type AwardMutations { + """Создать бэйдж""" + createBadgeAward(badgeAwardInputModel: BadgeAwardInput!, schoolId: UUID!): Award! + + """Скопировать бэйдж из существующего бейджа""" + copyBadgeAward(awardId: ID!, schoolId: UUID): Award! + + """Сделать бэйдж неактивным""" + archiveAward(awardId: ID!): Award! + + """Редактировать бэйдж""" + editBadgeAward(awardId: ID!, badgeAwardInputModel: BadgeAwardInput!, schoolId: UUID!): Award! +} + +"""""" +type AwardQueries { + """Доступные награды для выдачи""" + getAwards(schoolId: ID, badgeKindTypeId: Int, assignmentTypeId: Int, awardName: String, sortingFields: [SortingField], page: PagingInput): [Award!]! + + """Доступные награды для выдачи в приложении методолога""" + getAwardsV2(schoolId: ID, badgeKindTypeId: Int, assignmentTypeId: Int, awardName: String, sortingFields: [SortingField], page: PagingInput): [AwardV2!]! + + """количество доступных наград для выдачи""" + getAwardsCount(schoolId: ID, badgeKindTypeId: Int, assignmentTypeId: Int, awardName: String): Int! + + """Получение награды по идентификатору""" + getAwardById(awardId: ID!): Award! + + """ + Запрос истории получения ачивки c возможностью сортировать по awardDate + """ + getUserAwardHistoryByAwardId(awardId: ID!, login: String, schoolId: UUID, paging: PagingInput!, sortingFields: [SortingField!]!): [UserAwardHistory!]! + + """Кол-во записей в истории получения ачивки""" + getUserAwardHistoryByAwardIdCount(awardId: ID!, login: String, schoolId: UUID): Int! + + """Механики назначения наград""" + getS21AwardAssignmentTypes: [AssignmentType!]! +} + +"""Тип награды""" +enum AwardTypeEnum { + """Бейдж""" + BADGE + + """Экипировка""" + EQUIPMENT +} + +"""Награда (Ачивка)""" +type AwardV2 { + """""" + id: ID! + + """Тип награды""" + awardType: AwardTypeEnum! + + """Условие получения награды""" + awardCondition: AwardCondition! + + """Школа в которой заведена награда""" + schoolId: ID! + + """Сколько очков добавляется при апдейте""" + pointsToAdd: Int! + + """ + Бейдж + не {null} если {awardType=BADGE} + """ + badge: BadgeV2 + + """Формат выдачи""" + assignmentType: Int! + + """Дата создания награды""" + createdTs: DateTime! + + """Дата редактирования награды""" + updatedTs: DateTime + + """Награда активна""" + isActive: Boolean! + + """Школа, в которой заведена награда. {null} если награда глобальная""" + school: SafeSchool + + """Вознаграждение за награду""" + awardBounties: [AwardBounty!]! + + """ + Кол-во выданных наград в рамках кампуса(или продукта). Доступно только при запросе getAwards из-под ba, sa + """ + rewardCount: Int +} + +"""""" +input BTCStudentsInfoInputModel { + """Идентификатор ученика""" + studentId: UUID! + + """Город ученика""" + city: String + + """Идентификатор Буткемп-мастера""" + bmUserId: UUID + + """Формат обучения - очно/дистанционно""" + isStudyOnline: Boolean +} + +"""""" +type BTCStudentsInfoModel { + """Идентификатор записи об ученике в Моем классе""" + studentInfoId: ID! + + """Идентификатор ученика""" + studentId: UUID! + + """Город ученика""" + city: String + + """Идентификатор Буткемп-мастера""" + bmUserId: UUID + + """Формат обучения - очно/дистанционно""" + isStudyOnline: Boolean +} + +"""""" +type Badge { + """Код бэйджа""" + id: ID! + + """ + Вид бэйджа (Награды за гибкие навыки, награды за модули, награды за достижения уровней) + """ + kind: BadgeKind! + + """Название бэйджа""" + name: String! + + """Описание бэйджа""" + description: String! + + """Ссылка на изображение бэйджа""" + avatarUrl: String! + + """Ссылка на крупное изображение бэйджа""" + bigAvatarUrl: String! +} + +"""Создание/изменений бейджей""" +input BadgeAwardInput { + """Название получения бейджа""" + name: String! + + """Описание бейджа""" + description: String! + + """Механика назначения (учитель/ученик, система/ученик, etc.)""" + assignmentIds: [Int!]! + + """Ссылка на изображение бэйджа""" + avatarUrl: String! + + """Вид бейджа (командная работа, наставничество, etc.)""" + badgeKindId: Int! + + """Сколько очков начисляется за бейдж""" + pointsToAdd: Int! + + """ + Условия получения награды + 1 если награда выдается в ручную + """ + awardConditionId: Int! + + """Сколько печенек начисляется за получение бейджа""" + cookies: Int + + """Сколько очков опыта начисляется за получение бейджа""" + experienceValue: Int + + """Сколько игровой валюты начисляется за получение бейджа""" + coins: Int + + """Вознаграждение за получение бейджа""" + awardBounties: [AwardBountyInput!] + + """Включена ли системная выдача для награды""" + systemAssignmentEnabled: Boolean +} + +"""Вид бэйджа (командная работа, наставничество, etc.)""" +type BadgeKind { + """""" + id: Int! + + """""" + name: String! + + """ + Порядок в котором отображаются группы бейджей(сгруппированные по BadgeKind) на фронте. + Используется только на фронте, и только в Ш21. В БД не хранится. Вычисляется на лету. + С бэка на фронт улетает всегда, с фронта на бэк никогда не передаётся поэтому необязательное поле + """ + order: Int +} + +"""""" +type BadgeKindV2 { + """""" + id: Int! + + """""" + name: String! +} + +"""""" +type BadgeV2 { + """Код бэйджа""" + id: ID! + + """ + Вид бэйджа (Награды за гибкие навыки, награды за модули, награды за достижения уровней) + """ + badgeKind: BadgeKindV2! + + """Название бэйджа""" + name: String! + + """Описание бэйджа""" + description: String + + """Ссылка на изображение бэйджа""" + avatarUrl: String! + + """Ссылка на крупное изображение бэйджа""" + bigAvatarUrl: String! +} + +"""Содержимое баннера""" +type BannerContent { + """Идентификатор позиции в области""" + positionId: String! + + """Идентификатор кастомного баннера""" + customBannerId: String + + """Заголовок""" + heading: String! + + """Подзаголовок""" + subHeading: String + + """Ссылка баннера""" + bannerLink: String! + + """Пресет градиента""" + gradientId: String + + """Пресет картинки""" + presetImageId: String + + """Ссылка на обложку баннера""" + bannerImageLink: String + + """Пресет фонового цвета""" + backgroundColorCode: String + + """Наименование фонового цвета""" + backgroundColorName: String + + """Лого у партнерского баннера""" + logo: String + + """Дата начала действия баннера""" + startDate: Date + + """Дата окончания действия баннера""" + endDate: Date + + """Текст кнопки банера""" + buttonText: String + + """Ссылка кнопки банера""" + buttonLink: String + + """Роли""" + roles: BannerContentRolesEnum + + """Стори""" + stories: [BannerContentStory] +} + +"""Содержимое баннера""" +input BannerContentInput { + """Идентификатор позиции в области""" + positionId: String! + + """Идентификатор кастомного баннера""" + customBannerId: String + + """Заголовок""" + heading: String! + + """Подзаголовок""" + subHeading: String + + """Ссылка баннера""" + bannerLink: String! + + """Пресет градиента""" + gradientId: String + + """Пресет картинки""" + presetImageId: String + + """Ссылка на обложку баннера""" + bannerImageLink: String + + """Пресет фонового цвета""" + backgroundColorCode: String + + """Наименование фонового цвета""" + backgroundColorName: String + + """Лого у партнерского баннера""" + logo: String + + """Дата начала действия баннера""" + startDate: Date + + """Дата окончания действия баннера""" + endDate: Date + + """Текст кнопки банера""" + buttonText: String + + """Ссылка кнопки банера""" + buttonLink: String + + """Роли""" + roles: BannerContentRolesEnum + + """Стори""" + stories: [BannerContentStoryInput] +} + +"""Роли пользователей для содержимого баннеров""" +enum BannerContentRolesEnum { + """Только ученики""" + STUDENT + + """Только родители""" + PARENT + + """Все""" + ALL +} + +"""Стори""" +type BannerContentStory { + """Идентификатор позиции в области""" + positionId: Int! + + """Заголовок""" + heading: String + + """Описание""" + description: String + + """Пресет градиента""" + gradientId: String + + """Пресет картинки""" + presetImageId: String + + """Ссылка на обложку баннера""" + bannerImageLink: String + + """Пресет фонового цвета""" + backgroundColorCode: String + + """Наименование фонового цвета""" + backgroundColorName: String + + """Дата начала показа стори""" + startDate: Date + + """Дата окончания показа стори""" + endDate: Date + + """Текст кнопки для стори""" + buttonTextStory: String + + """Ссылка кнопки стори""" + buttonLinkStory: String + + """Роли""" + roles: BannerContentRolesEnum +} + +"""Стори""" +input BannerContentStoryInput { + """Идентификатор позиции в области""" + positionId: Int! + + """Заголовок""" + heading: String + + """Описание""" + description: String + + """Пресет градиента""" + gradientId: String + + """Пресет картинки""" + presetImageId: String + + """Ссылка на обложку баннера""" + bannerImageLink: String + + """Пресет фонового цвета""" + backgroundColorCode: String + + """Наименование фонового цвета""" + backgroundColorName: String + + """Дата начала показа стори""" + startDate: Date + + """Дата окончания показа стори""" + endDate: Date + + """Текст кнопки для стори""" + buttonTextStory: String + + """Ссылка кнопки стори""" + buttonLinkStory: String + + """Роли""" + roles: BannerContentRolesEnum +} + +"""Секция баннеров""" +type BannerSection { + """Id секции баннеров""" + id: ID + + """Код секции""" + sectionCode: String! + + """Имя секции""" + sectionName: String! + + """Описание секции""" + sectionDescription: String + + """Максимальное количество позиций""" + maxSectionContentCount: Int + + """Содержимое секции (информация о баннерах) в JSON-формате.""" + sectionContent: [BannerContent!]! + + """ID школы, если не задано, то показываем всем""" + schoolId: ID + + """Наименование школы""" + schoolName: String + + """ID параллели, если не задано, то показываем всем""" + stageId: ID + + """Наименование параллели""" + stageName: String +} + +"""Справочная информация по секции баннеров""" +type BannerSectionInfo { + """Код секции""" + sectionCode: String + + """Имя секции""" + sectionName: String + + """Описание секции""" + sectionDescription: String + + """Максимальное количество позиций""" + maxSectionContentCount: Int +} + +"""Секция баннеров""" +input BannerSectionInput { + """Id секции баннеров""" + id: ID + + """Имя секции""" + sectionCode: String! + + """Содержимое секции (информация о баннерах) в JSON-формате.""" + sectionContent: [BannerContentInput!]! + + """ID школы, если не задано, то показываем всем""" + schoolId: ID + + """ID параллели, если не задано, то показываем всем""" + stageId: ID +} + +"""Публичный профиль пользователя""" +type BasePublicProfile { + """Имя пользователя edu_power_global.users.first_name""" + firstName: String! + + """Отчество пользователя edu_power_global.users.middle_name""" + middleName: String + + """Фамилия пользователя edu_power_global.users.last_name""" + lastName: String! + + """Ссылка на аватар пользователя edu_power_global.users.avatar_url""" + avatarUrl: String +} + +"""обычная сущность части стикер-фона""" +type BgStickerPart { + """Id части стикер-фона""" + id: ID! + + """Id главного стикера""" + bgStickerId: ID! + + """Название части стикер-фона""" + name: String! + + """Описание части""" + description: String! + + """Уровень за который выдается этот стикер-фон""" + level: ExperienceLevel! + + """Ссылка на стикер-аватар""" + url: String +} + +"""""" +type BigChallengeMutations { + """""" + acceptBigChallengeV2(studentId: UUID!, bigChallengeId: ID!, stageId: ID!): ID + + """""" + acceptBigChallengeTrialV2(studentId: UUID!, bigChallengeId: ID!, stageId: ID!): ID + + """""" + declineBigChallengeTrialV2(studentId: UUID!, bigChallengeId: ID!, stageId: ID!): ID +} + +"""enums""" +enum BigChallengePeriod { + """""" + ACADEMIC_YEAR + + """""" + TRIAL + + """""" + SUMMER_EVE + + """""" + SUMMER + + """""" + WINTER_CHANGE +} + +"""""" +type BigChallengeQuery { + """""" + isEligibleToChangeBigChallenge(studentId: UUID!): Boolean! + + """""" + bigChallengesV2(stageId: ID!): [BigChallengeV2!]! + + """""" + recommendedBigChallenges(studentId: UUID, maxCount: Int): [BigChallengeV3] +} + +"""""" +type BigChallengeV2 { + """идентификатор большого вызова""" + bigChallengeId: ID! + + """название большого вызова""" + name: String! + + """полное описание большого вызова""" + description: String! + + """краткое описание большого вызова""" + shortDescription: String! + + """тип большого вызова""" + type: String! + + """идентификатор параллели""" + stageId: ID! + + """список категорий предметов большого вызова""" + subjects: [ChallengeSubjectCategory!]! +} + +"""""" +type BigChallengeV3 { + """идентификатор большого вызова""" + bigChallengeId: ID! + + """название большого вызова""" + name: String! + + """полное описание большого вызова""" + description: String! + + """краткое описание большого вызова""" + shortDescription: String! + + """тип большого вызова""" + type: String! + + """идентификатор параллели""" + stageId: ID! + + """список категорий предметов большого вызова""" + subjects: [ChallengeSubjectCategory!]! + + """Целевое значение баллов по Большому Вызову""" + pointsRequired: Int! +} + +"""""" +type BigChallengeWithStudentProgressQueryV3 { + """""" + bigChallengeInfoWithProgressV3(studentId: UUID!, stageId: ID!, bigChallengeId: ID!): BigChallengeWithStudentProgressV3 + + """""" + activeBigChallengeInfoWithProgressV3(studentId: UUID!, stageId: ID!): BigChallengeWithStudentProgressV3 + + """""" + lastActiveBigChallengeInfoWithProgressV2(studentId: UUID!): BigChallengeWithStudentProgressV3 + + """""" + currentBigChallengeStateForStudent(studentId: UUID!): BigChallengeWithStudentProgressV3 + + """""" + currentBigChallengeProgressForStudent(studentId: UUID!, bigChallengeId: ID!): CurrentProgress +} + +"""""" +type BigChallengeWithStudentProgressV3 { + """""" + studentId: UUID! + + """""" + bigChallenge: BigChallengeV3! + + """""" + progressBarData: ProgressBarDataV2! + + """""" + studentToBigChallenge: StudentToBigChallengeV2 +} + +"""Книга""" +type Book { + """""" + id: ID! + + """Название книги""" + name: String! + + """Идентфикатор УМК""" + umkId: ID! @deprecated(reason: "Will be deleted. Use instead bookUmkId") + + """Идентфикатор УМК""" + bookUmkId: ID + + """Вид литературы""" + type: BookTypeEnum! + + """Авторы книги""" + authors: [Author!]! + + """Url обложки""" + coverUrl: String +} + +"""Обложки для книг""" +type BookAvatar { + """Идентификатор обложки""" + bookId: ID! + + """URL обложки""" + avatarUrl: String! +} + +"""Вид литературы""" +enum BookTypeEnum { + """Методическое_пособие""" + METHODOLOGICAL_GUIDE + + """Программа""" + PROGRAM + + """Учебник""" + TEXTBOOK + + """ЭФУ""" + EFU + + """ЭФУ_ЭФУП""" + EFU_EFUP + + """Атлас""" + ATLAS + + """Дидактический материал""" + DIDACTIC_MATERIAL + + """Контурная_карта""" + CONTOUR_MAP + + """Пособие_по_диагностике_и_аттестации""" + DIAGNOSTIC_CERTIFICATION_GUIDE + + """Рабочая_тетрадь""" + WORKBOOK +} + +"""Статистика по алгоритму выбора проверяющего""" +type BookingAttemptStatistic { + """Этап, на котором выбыл или был выбран таймслот""" + selectionStageEnum: SelectionStageEnum! + + """Средний процент отбора участника""" + averagePercent: Int! + + """Список попыток записей проверяемых""" + bookingVerifiableList: [BookingAttemptVerifiable!]! + + """Кол-во попыток по конкретному этапу""" + countAttempts: Int! +} + +"""Попытка записи проверяемого""" +type BookingAttemptVerifiable { + """Идентификатор попытки""" + bookingAttemptId: Int! + + """Идентификатор записи""" + bookingId: Int! + + """Логин проверяемого""" + loginVerifiable: String! + + """Время проверки""" + timeCheck: DateTime! + + """Длительность проверки""" + duration: Int! +} + +"""Попытка записи проверяющего""" +type BookingAttemptVerifier { + """Идентификатор попытки""" + bookingAttemptId: Int! + + """Идентификатор записи""" + bookingId: Int! + + """Этап, на котором выбыл или был выбран таймслот""" + selectionStageEnum: SelectionStageEnum! + + """Логин проверяющего""" + loginVerifier: String! + + """Общее количество встреч с проверяемым (по P2P)""" + meetingsFrequency: Int! + + """Дата последней встречи с проверяемым (null - если не было встреч)""" + lastMeetingDate: Date + + """Значение баланса PRP на момент записи на проверку""" + currentPrpAmount: Int! + + """ + Названия кампуса, в которой был создан слот + {null}, когда еще не было этапа Выбор кампуса + """ + campusName: String +} + +"""Протокол проверки P2P в школе 21""" +enum BookingStatusEnum { + """Заданиче отправлено на проверку""" + TASK_SEND_FOR_CHECK_TO_STUDENT + + """Задание сдано на проверку сотруднику""" + TASK_SEND_FOR_CHECK_TO_STAFF + + """Задание проверено учителем""" + TASK_CHECKED_BY_STAFF + + """Задание проверено другим студентом""" + TASK_CHECKED_BY_STUDENT + + """Проверяющий отменил проверку""" + VERIFIER_CANCELLED_BOOKING + + """Проверяемый отменил проверку""" + VERIFIABLE_CANCELLED_BOOKING + + """Проверяющий не явился""" + VERIFIER_WAS_ABSENT + + """Проверяемый не явился""" + VERIFIABLE_WAS_ABSENT + + """Задание отправлено на принудительную проверку студенту""" + TASK_SEND_FOR_FORCED_CHECK_TO_STUDENT + + """Задание отправлено на принудительную проверку сотруднику""" + TASK_SEND_FOR_FORCED_CHECK_TO_STAFF + + """Задание на проверке код ревью""" + TASK_IN_CODE_REVIEW + + """Проверка отменена из-за отчисления проверяемого""" + CANCELLED_BY_EXPELLED_VERIFIABLE + + """Проверка отменена из-за отчисления проверяющего""" + CANCELLED_BY_EXPELLED_VERIFIER + + """Проверка отменена из-за окончания интенсива проверяющего""" + CANCELLED_BY_COMPLETION_INTENSIVE_VERIFIER + + """Проверка отменена из-за заморозки проверяемого""" + CANCELLED_BY_FROZEN_VERIFIABLE + + """Проверка отменена из-за заморозки проверяющего""" + CANCELLED_BY_FROZEN_VERIFIER + + """Задание отправлено на приоритетную проверку студенту""" + TASK_SEND_FOR_PRIORITY_CHECK_TO_STUDENT + + """Задание отправлено на приоритетную проверку сотруднику""" + TASK_SEND_FOR_PRIORITY_CHECK_TO_STAFF + + """Задание отправлено на экстра проверку студенту""" + TASK_SEND_FOR_EXTRA_CHECK_TO_STUDENT + + """Задание отправлено на экстра проверку сотруднику""" + TASK_SEND_FOR_EXTRA_CHECK_TO_STAFF + + """Задание провеверно на приоритетной проверке студентом""" + TASK_CHECKED_WITH_PRIORITY_TYPE_BY_STUDENT + + """Задание провеверно на приоритетной проверке сотрудником""" + TASK_CHECKED_WITH_PRIORITY_TYPE_BY_STAFF + + """Задание провеверно на экстра проверке студентом""" + TASK_CHECKED_WITH_EXTRA_TYPE_BY_STUDENT + + """Задание провеверно на экстра проверке сотрудником""" + TASK_CHECKED_WITH_EXTRA_TYPE_BY_STAFF +} + +"""Статистика пользователя по его избранному""" +type BookmarkStatistics { + """Количество материалов в списке избранного пользователя""" + totalItems: Int! +} + +"""""" +type BootcampMasterModel { + """Идентификатор Буткемп-мастера""" + bmId: UUID! + + """Идентификатор пользователя""" + userId: UUID! + + """Имя Буткемп-мастера""" + firstName: String + + """Фамилия Буткемп-мастера""" + lastName: String + + """Отчество Буткемп-мастера""" + middleName: String +} + +"""""" +type Branch { + """""" + id: UUID! + + """""" + name: String! +} + +"""""" +type BreadCrumbsPlanItem { + """Идентификатор плана""" + planId: ID + + """Идентификатор сущности в плане""" + planItemId: ID + + """Идентификатор курса""" + courseId: ID + + """Идентификатор сущности в курсе""" + courseItemId: ID + + """Идентификатор группы студентов""" + studentGroupId: ID + + """Название плана""" + planName: String + + """Название сущности в плане""" + planItemName: String + + """Название курса""" + courseName: String + + """Название сущности в курсе""" + courseItemName: String +} + +"""""" +type Building { + """""" + id: ID! + + """""" + name: String! + + """""" + address: String! + + """""" + isActive: Boolean! + + """""" + roomsNumber: Int! + + """""" + classrooms: [ClassRoom!]! + + """""" + safeSchool: SafeSchool! +} + +"""Типы жалоб на буллинг""" +enum BullyingComplaintTypeEnum { + """""" + STUDIES_PROBLEMS + + """""" + PROFESSION_CHOICE + + """""" + PARENTS_PROBLEMS + + """""" + CLASSMATES_PROBLEMS + + """""" + JUST_TALK + + """""" + OTHER +} + +"""""" +type BusinessAdminMutations { + """сохранение текущей школы""" + saveSchool(schoolUpdate: SchoolUpdateInput!): ValidatedSchool! + + """Удаление здания, привязанного к школе""" + deleteBuilding(buildingID: ID!): Boolean + + """""" + activateSchool: School! + + """""" + createBuilding(name: String!, address: String!, classrooms: [ClassRoomInput!]!): Building! @deprecated(reason: "Classroom has new mandatory field, use saveBuilding method") + + """создание здания""" + saveBuilding(name: String!, address: String!, classrooms: [ClassRoomInputModel!]!): Building! + + """""" + editBuilding(buildingID: ID!, name: String!, address: String!, editedClassrooms: [ClassRoomInput!]!, newClassrooms: [ClassRoomInput!]!): Building! @deprecated(reason: "Classroom has new mandatory field, use updateBuilding method") + + """""" + updateBuilding(buildingID: ID!, name: String!, address: String!, editedClassrooms: [ClassRoomInputModel!]!, newClassrooms: [ClassRoomInputModel!]!): Building! + + """""" + createClassRoom(classRoom: ClassRoomInputModel!, buildingID: ID!): ClassRoom! + + """""" + updateClassRoom(classRoom: ClassRoomInputModel!, buildingID: ID!): ClassRoom! + + """""" + deactivateClassRoom(classRoomId: ID!): Boolean! + + """""" + saveStageGroups(academicYearId: ID!, stageGroups: [StageGroupInput!]!): [StageGroup!]! + + """ + Сохранение классов с получением и добавлением предметов для учителя Иннополис + """ + createStageGroupWithAllStageSubjectGroups(academicYearId: ID!, stageGroup: StageGroupInput!, teacherId: ID!): [ClassSubject!]! + + """редактирование/наполнение класcа и групп, если необходимо""" + saveStageGroup(stageGroupId: ID!, newStudents: [ID!], removedStudents: [ID!], formMaster: ID, stageSubjectGroupIds: [ID!], learningType: LearningTypeEnum): StageGroup! + + """редактирование/наполнение клаcса и групп для Bootcamp, если необходимо""" + saveStageGroupBTC(stageGroupId: ID!, studentsInfo: [BTCStudentsInfoInputModel!], removedStudents: [ID!], formMaster: ID, stageSubjectGroupIds: [ID!], learningType: LearningTypeEnum): StageGroup! + + """выпуск учеников""" + graduateStudents(stageGroupId: ID!, graduateStudents: [ID!]!): StageGroup! + + """Проставление школе флага, что все обязательные данные заполнены""" + setMandatoryDataFilled(schoolId: UUID!): Boolean + + """создание/редактирование группы по предмету""" + saveClassSubjectGroup(classSubject: ClassSubjectInput!): ClassSubject! + + """ + создание/редактирование групп по предмету (опционально распределение студентов по гкпп в случае создания новых с исключениями) + """ + saveClassSubjectGroups(classSubject: [ClassSubjectInput!]!, distributeStudentsToNewStageSubjectGroups: Boolean, notDistributedStudents: [UUID!]): [ClassSubject!]! + + """создание нескольких групп по предмету""" + createClassSubjectGroups(inputModels: [ClassSubjectBaseInput!]!): [ClassSubject!]! + + """создание/редактирование группы по предмету для Школы 21""" + saveS21ClassSubjectGroup(classSubject: ClassSubjectInput!, startDate: DateTime!): ClassSubject! + + """удалениие групп по предмету""" + removeClassSubjectGroups(classSubjectIds: [ID!]!): StageGroup! @deprecated(reason: "Использовать saveStudyPeriodSet. Под удаление") + + """""" + saveStudyPeriodSets(academicYearId: ID!, updatedStudyPeriodSets: [StudyPeriodSetInput!]): [StudyPeriodSet!]! + + """сохранение набора учебных периодов""" + saveStudyPeriodSet(academicYearId: ID!, updatedStudyPeriodSet: StudyPeriodSetInput!): UUID! + + """""" + saveTimeSlotSets(newTimeSlotSets: [TimeSlotSetInput!], editedTimeSlotSets: [TimeSlotSetInput!], deletedTimeSlotSets: [TimeSlotSetInput!]): [TimeSlotSet!]! + + """""" + updateStageGroupsForTimeSlotSet(timeSlotSetId: ID!, academicYearId: ID!, stageGroupIds: [ID!]!): Boolean + + """ + Создание Плана на Класс по Предмету с назначением плану определенного статуса(stage_subject_group_plans) TODO: до написания метода + """ + createClassPlan(classSubjectId: ID!, frames: [ClassPlanFrameInput!]!, status: PlanStatusEnum): ClassPlan! + + """ + Изменение Плана на Класс по Предмету по идентификатору (stage_subject_group_plan_id) + """ + changeClassPlan(planId: ID!, frames: [ClassPlanFrameInput!]!): ClassPlan! @deprecated + + """""" + changeClassPlanWithChecking(planId: ID!, frames: [ClassPlanFrameInput!]!, isNeedToCheckAffecting: Boolean!): ClassPlanChangeResponse! + + """Изменение статуса Плана на Класс По Предмету""" + setClassPlanStatus(planId: ID!, status: PlanStatusEnum!): ClassPlan! + + """сохранение учебной программы за год""" + saveStudyProgram(studyProgram: StudyProgramInput!): StudyProgram! + + """Стиражировать Базовый Плейлист""" + copyBasePlaylist( + """ + идентификатор копируемого Базового Плейлиста (base_playlists.base_playist_id) + """ + basePlaylistId: ID! + + """ + идентификаторы Групп по Предмету (stage_subject_groups.stage_subject_group_id), на которые копируется Базовый Плейлист + """ + classSubjectIds: [ID!]! + + """ + идентификаторы студентов в подгруппах (stage_subject_subgroup_students.stage_subject_subgroup_student_id) + на которые копируется Базовый Плейлист + """ + studentInSubgroupIds: [ID!]! + + """ + исключать ли изменение СЗ Персональных планов при изменении СЗ Плана на Класс + """ + excludePersonalPlansFromChangingClassPlan: Boolean + ): TaskSet! + + """ + Деактивация драфта бизнес-пользователя с ролями (Ученик, Родитель) и только в текущей школе + """ + deactivateUserDraft(userDraftId: ID!, email: String!): UserDraftOperationsResult! + + """ + сохранение/изменение драфта бизнес-пользователя с ролями (Ученик, Родитель) и только в текущей школе + """ + saveUserDraft(userDraftInvite: UserDraftInvite!): UserDraftOperationsResult! + + """ + повторная отправка приглашения на основе существующего драфт-пользователя + """ + sendInviteAgainAndUpdateUserDraft(email: String!): UserDraftOperationsResult! + + """сохранение бизнес-пользователя с ролью ученик (только в текущей школе)""" + saveUserWithUserDraftBusinessCode(businessCode: String!): User! + + """ + сохранение/изменение бизнес-пользователя с ролями (учитель, ученик, БА) и только в текущей школе + """ + saveUser(user: UserInput!): User! + + """ + Удаление/деактивация роли Учитель у пользователя в текущей школе. В т.ч. удаление роли Ученик, если она относится к внешнему обучению + """ + substituteAndDeleteTeacherRole( + """Идентификатор пользователя с удаляемой ролью""" + userId: ID! + + """Идентификатор школы, к которой относится удаляемая роль""" + schoolId: ID! + + """ + Пользователи на замену классного руководителя, учителя на замену в ГКпП вместо удаляемого + """ + substituteTeachersInput: SubstituteTeachersInput + ): Boolean! + + """ + Удаление/деактивация роли Конфигуратор системы у пользователя в текущей школе + """ + deleteBusinessAdminRole( + """Идентификатор пользователя с удаляемой ролью""" + userId: ID! + + """Идентификатор школы, к которой относится удаляемая роль""" + schoolId: ID! + ): Boolean! + + """Удаление/деактивация роли Родитель у пользователя в текущей школе""" + deleteParentRole( + """Идентификатор пользователя с удаляемой ролью""" + userId: ID! + + """Идентификатор школы, к которой относится удаляемая роль""" + schoolId: ID! + ): Boolean! + + """Удаление/деактивация роли Ученик у пользователя в текущей школе""" + deleteStudentRole( + """Идентификатор пользователя с удаляемой ролью""" + userId: ID! + + """Идентификатор школы, к которой относится удаляемая роль""" + schoolId: ID! + ): Boolean! + + """""" + activateTeacherRole(userId: ID!, schoolId: ID!, subjectIds: [ID!]!): Boolean + + """""" + activateBusinessAdminRole(userId: ID!, schoolId: ID!): Boolean + + """""" + activateStudentRole(userId: ID!, schoolId: ID!, stageGroupId: ID!): Boolean + + """""" + activateParentRole(userId: ID!, schoolId: ID!, childrenIds: [UUID!]!): Boolean + + """Устанавливаем второй фактор при аутентификации пользователя.""" + updateUserSecondFactorAuth(userId: ID!, smsAction: UserSecondFactorAuthSmsAction, totpAction: UserSecondFactorAuthTotpAction): Boolean! + + """Добавить пользователей в группы""" + addUsersToUserGroups(request: ManageUserGroupsInput!): [UserGroup!]! + + """Удалить пользователей из групп""" + removeUsersFromUserGroups(request: ManageUserGroupsInput!): [UserGroup!]! + + """ + Скопировать групповой План на Группы по Предмету или на Студентов как персональный + """ + copyClassPlan( + """ + идентификатор копируемого плана (stage_subject_group_plans.stage_subject_group_id) + """ + classPlanId: ID! + + """ + идентфиикаторы Групп по Предмету (stage_subject_groups.stage_subject_group_id), на которые копируется план + """ + classSubjectIds: [ID!]! + + """ + идентификаторы студентов в подгруппах (stage_subject_subgroup_students.stage_subject_subgroup_student_id) + на которые копируется план как персональный + """ + studentInSubgroupIds: [ID!]! + + """статус, с которым копируется план""" + status: PlanStatusEnum! + ): ClassPlan! + + """Создание конфигурации оценивания""" + createRatingConfiguration(ratingConfiguration: RatingConfigurationInput!): RatingConfiguration! + + """ + Новый метод сохранения предмета(-ов) для данного образовательного учреждения с 2-мя параметрами "subjects" и "orgUnitId" + """ + saveSubjectsForOrganization(subjects: [SubjectInput!]!, orgUnitId: String!): [Subject!]! + + """Создание экзамена в школе""" + createExam(exam: ExamInput!): Exam! + + """Обновление экзамена в школе""" + updateExam(examId: ID!, exam: ExamInput!): Exam! @deprecated(reason: "Использовать saveGameCoalitionV2, удалить после переезда в новую админку ш21") + + """""" + saveGameCoalition(gameCoalition: GameCoalitionInput!): GameCoalition! @deprecated(reason: "Использовать saveGameCoalitionV3, удалить после переезда в новую админку ш21") + + """""" + saveGameCoalitionV2(gameCoalition: GameCoalitionInputV2!): GameCoalition! + + """""" + saveGameCoalitionV3(gameCoalition: GameCoalitionInputV3!): GameCoalition! + + """Создаем или изменяем турнир в школе пользователя""" + saveGameTournament(gameTournament: GameTournamentInput!): GameTournament! + + """Обновление разбалловки""" + updateCountInfo(countInfo: CountInfoInput!, taskId: ID!): Boolean! + + """перенос структуры классов из года в год""" + copyStructureToNewYear( + """""" + sourceAcademicYearId: ID! + + """""" + destinationAcademicYearId: ID! + + """при allStageGroups = true, stageGroupList должен быть null""" + stageGroupList: [ID!] + + """""" + allStageGroups: Boolean! + + """""" + allStudyPeriods: Boolean! + + """""" + allStageSubjectGroups: Boolean! + + """""" + allStudyPrograms: Boolean! + ): [String!]! @deprecated(reason: "Не используется. Перешли на massTransferAsync") + + """ + Мутация создает асинхронную задачу на перевод классов из одного учебного года в другой. + Возвращает ID созданной задачи + """ + massTransferAsync( + """Из какого учебного года переносим классы""" + sourceAcademicYearId: ID! + + """В какой учебный год переносим классы""" + destinationAcademicYearId: ID! + + """Список классов для перевода (какой класс каким должен стать)""" + stageGroupsToTransfer: [TransferInput!]! + + """Список классов для выпуска""" + stageGroupIdsToGraduate: [ID!]! + + """Переносить ли учебные периоды""" + copyStudyPeriods: Boolean! + + """Переносить ли предметные группы""" + copyStageSubjectGroups: Boolean! + ): ID! + + """Сохранение плана на параллель""" + saveS21StagePlan(planGoalInputModels: [S21StagePlanGoalInput!]!, globalPlanId: ID, stagePlanId: ID): S21StagePlan! + + """Публикация плана на параллель""" + publishS21StagePlanByGlobalPlanIds(globaPlanIds: [ID!]!): [S21StagePlan!]! + + """Сброс плана на параллель до состояния глобального плана""" + resetS21StagePlan(stagePlanId: ID!): S21StagePlan! + + """ + Добавить емейл психолога (для оказания помощи при издевательствах) с привязкой к классам + """ + addStageGroupPsychologistEmail( + """емейл психолога""" + email: String! + + """Идентификаторы класов""" + stageGroupIds: [ID!]! + ): String! + + """ + Удалить емейл психолога (для оказания помощи при издевательствах) с привязкой к классам + """ + removeStageGroupPsychologistEmail(email: String!): String! + + """Сохранение плана на класс""" + saveS21ClassPlan(classPlan: S21ClassPlanInput!): S21ClassPlan! + + """Изменение проектов в плане на класс""" + saveClassPlanProjects(classPlan: S21ClassPlanInput!): S21ClassPlan! + + """Запись баллов в таблицу глобальных заданий""" + updateGlobalPlanGoalPoints(goalPoints: [GoalPointInput!]!): Boolean + + """Сохранение параметров расчета навыков за проверку задания""" + saveTaskAdditionalAttributes(additionalAttributes: AdditionalAttributesInput!): Boolean! + + """Формирование команд из модуля в плане на класс""" + formTeamsForStageSubjectGroupPlanGoal(stageSubjectGroupPlanGoalId: ID!): [ProjectTeamMembers!]! + + """Формирование команд из модуля в локальном курсе (группе проектов)""" + formTeamsForLocalCourseGoal(localCourseGoalId: ID!): [ProjectTeamMembers!]! + + """Обработка всех дедлайнов""" + handleAllProjectDeadlines: Boolean + + """Создает План на Параллель по Предмету""" + createStagePlan(stageId: ID!, subjectId: ID!, status: PlanStatusEnum!, frames: [StagePlanFrameInput!]!, globalPlanId: ID): StagePlan! + + """ + Изменяет существующий План на Параллель по ID (stage_subject_plans.stage_subject_plan_id) + """ + changeStagePlan(stagePlanId: ID!, status: PlanStatusEnum!, frames: [StagePlanFrameInput!]!): StagePlan! @deprecated(reason: "use sc21BaTaskCheck#savePrivateFeedback") + + """Сохранение приватного фидбэка на команду""" + savePrivateFeedback(filledChecklistId: ID!, feedbacks: [PrivateFeedbackInput!]!): Boolean! + + """Создание дедлайна Ш21""" + createDeadline( + """DEPRECATED Инфо о дедлайне""" + deadline: DeadlineInput! + + """Инфо о дедлайне""" + deadlineInfo: DeadlineS21Input + + """Правила из конструктора целей""" + evaluationRules: [EvaluationRuleGroupInput!]! + ): Deadline! + + """Редактирование дедлайна Ш21""" + updateDeadline( + """DEPRECATED Инфо о дедлайне""" + deadline: DeadlineInput! + + """Инфо о дедлайне""" + deadlineInfo: DeadlineS21Input + + """Правила из конструктора целей""" + evaluationRules: [EvaluationRuleGroupInput!]! + + """Идентификатор дедлайна""" + deadlineId: UUID! + ): Deadline! + + """Удаление дедлайна""" + deleteDeadline(deadlineId: UUID!): Deadline! + + """Удаление заявки на перенос дедлайна""" + rejectDeadlineShiftRequest(deadlineShiftRequestId: UUID!): DeadlineShiftRequest! + + """Перенести дедлайн Ш21""" + approveDeadlineShiftRequest( + """Идентификатор запроса на сдвиг дедлайна""" + deadlineShiftRequestId: UUID! + + """ + Количество дней для сдвига + @deprecated(reason: "Use parameter 'shiftTs' instead") + """ + daysToShift: Int! + + """Дата и время сдвига для дедлайна""" + shiftTs: DateTime + ): DeadlineShiftRequest! + + """сдвиг дедлайнов для студента""" + shiftDeadlines(shiftDeadlines: [ShiftDeadline!]!): [DeadlineStudentInfo]! + + """сдвиг дедлайна для студента""" + shiftSingleDeadline(shiftDeadline: ShiftDeadline!): DeadlineStudentInfo! + + """Ручное завершение экзамена для всех студентов подписанных на экзамен""" + manualExamFinish(goalId: ID!, examEventId: ID!): Boolean! + + """Копирование модуля, возвращает скопированный модуль""" + copyModule( + """Идентификатор оригинала""" + moduleId: ID! + ): StudyModule! @deprecated(reason: "Под удаление. Использовать новую схему content.graphqls, метод copyModule") + + """Добавление урока с возможностью повтора до определенной даты""" + addLesson(lessonInput: AddLessonInput!): Int! + + """ + Добавление коллекции уроков с возможностью повтора до определенной даты + """ + addLessons(lessonInput: [AddLessonInput!]!): Int! + + """Редактирование урока""" + changeLesson(lessonInput: LessonInput!, lessonId: ID!): Lesson! + + """ + Метод для модификации уроков в результате редактирования цепочки уроков + """ + modifyLessons( + """Уроки для создания""" + newLessons: [LessonInput!] + + """Уроки для редактирования""" + editedLessons: [LessonInput!] + + """Идентификаторы уроков для удаления""" + deletedLessons: [ID!] + ): Boolean! + + """ + Метод для модификации номера кабинетов в еще не прошедших уроках + Можно в newClassroomId передать null, если кабинет необязателен + """ + changeClassroomInFutureLessons(oldClassroomId: ID!, newClassroomId: ID): Boolean! + + """ + Удаление урока. + Если стоит флаг deleteAllRepeatAtSameDayOfWeek - то удаляются все повторы этого урока, + которые приходятся на тот же день недели + """ + deleteLesson(lessonId: ID!, deleteAllRepeatAtSameDayOfWeek: Boolean!): Int! + + """Удаление сгенерированного расписания, true - если успешно удалено""" + deleteTimetableDraft(timetableDraftId: ID!): Boolean! + + """Сохранение настройки повторного прохождения проекта""" + saveModuleAttemptsSettings(goalId: ID!, moduleAttemptSettings: ModuleAttemptsSettingsInput!): ModuleAttemptsSettings! + + """""" + readNotification(notificationId: ID!): ID! + + """""" + readAllNotifications: Boolean! + + """""" + readByObject(objectId: String!, objectType: String!, typeIds: [ID!]!): Boolean! + + """Создание персональных планов на основе существующих""" + copyAndActivatePersonalPlans(studentId: String!, trajectorySlug: String!): [ID]! + + """Отчислить студентов с основы Ш21""" + expelStudents(students: [UUID!]!): ExpelResult @deprecated(reason: "use school21 mutation") + + """""" + expelStudent(student: UUID!): ExpelResult! @deprecated(reason: "use school21 mutation") + + """Восстановить студентов в Ш21""" + reinstateStudents(reinstateStudents: [ReinstateStudentInput!]!): ExpelResult @deprecated(reason: "use school21 mutation") + + """""" + reinstateStudent(reinstateStudent: ReinstateStudentInput!): ExpelResult! @deprecated(reason: "use school21 mutation") + + """Заморозить студентов в ш21""" + freezeStudents(students: [UUID!]!): ExpelResult @deprecated(reason: "use school21 mutation") + + """""" + freezeStudent(student: UUID!): ExpelResult! @deprecated(reason: "use school21 mutation") + + """""" + unfreezeStudents(students: [UUID!]!): ExpelResult @deprecated(reason: "use school21 mutation") + + """""" + saveSchoolLearningActivityWeights(schoolId: UUID!, learningActivities: [LearningActivityInput!]!): Boolean + + """""" + addSubjectLearningActivity(schoolId: UUID!, subjectId: ID!, learningActivityId: ID!): [LearningActivity!]! + + """""" + deleteSubjectLearningActivity(schoolId: UUID!, subjectId: ID!, learningActivityId: ID!): [LearningActivity!]! + + """Выполнить асинхронный запрос на автоматическую генерацию расписания""" + generateSchedule( + """""" + academicYearId: ID! + + """Идентификаторы классов, для которых генерируем расписание""" + stageGroupIds: [ID!]! + + """Количество учебных дней в неделю""" + schoolDaysCountPerWeek: Int! + + """Идентификаторы зданий""" + buildingIds: [ID!]! + + """Признак можно ли ставить письменные предметы после физ-ры""" + isNoWritingWorkSubjectsAfterPhysicalExercise: Boolean! + + """ + Название для генерируемого расписания, nullable для обратной совместимости, + если не будет заполнено с фронта, то в БД запишется 'Без названия' + """ + name: String + + """Список ограничений с весами""" + scheduleConstraints: [ScheduleConstraintInput!] + ): Boolean! + + """Создание драфта ручного расписания""" + createManualTimeTableDraft( + """""" + academicYearId: ID! + + """Идентификаторы классов, для которых генерируем расписание""" + stageGroupIds: [ID!]! + + """Количество учебных дней в неделю""" + schoolDaysCountPerWeek: Int! + + """ + Название для генерируемого расписания, nullable для обратной совместимости, + если не будет заполнено с фронта, то в БД запишется 'Без названия' + """ + name: String + ): TimetableDraftV2! + + """Сохранение драфта расписания""" + saveTimetableDraftV2(timetableDraftId: ID!, timetableDraftChanges: [TimetableDraftChangeInput!]!, lessonDraftVersion: LessonDraftVersion!): Boolean! + + """Обновление драфта расписания""" + updateTimetableDraft(timetableDraftId: ID!, lessonDrafts: [LessonDraft!]!): Boolean! @deprecated(reason: "Use createTimetableDraftLessons/updateTimetableDraftLessons/deleteTimetableDraftLessons instead") + + """Обновление уроков в существующем драфте расписания""" + updateTimetableDraftLessons(timetableDraftId: ID!, lessonDrafts: [StageGroupTimetableDraftInput!]!): [ExtendedLessonDraft!]! + + """Добавление уроков в существующий драфт расписания""" + createTimetableDraftLessons(timetableDraftId: ID!, lessonDrafts: [StageGroupTimetableDraftInput!]!): [ExtendedLessonDraft!]! + + """ + Удаление уроков из существующего драфта расписания по идентификаторам драфтов уроков + """ + deleteTimetableDraftLessons(timetableDraftId: ID!, lessonDraftIds: [ID!]!): Boolean! + + """Сохраняет данные о школьной группе системы оценивания""" + saveSchoolMarkTypeGroup(schoolMarkTypeGroup: SchoolMarkTypeGroupInput!): SchoolMarkTypeGroup! + + """Сохраняет данные о новой школьной группе системы оценивания""" + createSchoolMarkTypeGroup(schoolMarkTypeGroup: SchoolMarkTypeGroupInput!): SchoolMarkTypeGroup! + + """Удаляет данные о школьной группе системы оценивания""" + deleteSchoolMarkTypeGroup(schoolMarkTypeGroupId: ID!, schoolId: UUID!): [SchoolMarkTypeGroup!]! + + """Создаёт новую конфигурацию оценивания""" + createSchoolMarkTypeGroupConfiguration(schoolMarkTypeGroupConfiguration: SchoolMarkTypeGroupConfigurationInput!): SchoolMarkTypeGroupConfiguration! + + """Сохраняет измененные данные о конфигурации оценивания""" + saveSchoolMarkTypeGroupConfiguration(schoolMarkTypeGroupConfiguration: SchoolMarkTypeGroupConfigurationInput!): SchoolMarkTypeGroupConfiguration! + + """ + Удаляет данные о конфигурации оценивания и возвращает актуальный список конфигураций оценивания для школы + """ + deleteSchoolMarkTypeGroupConfiguration(schoolMarkTypeGroupConfigurationId: ID!, schoolId: UUID!): [SchoolMarkTypeGroupConfiguration!]! + + """""" + createUserInvites(userDraftInvites: [UserDraftInvite!]!): [UserDraftOperationsResult!]! + + """""" + updateUserInvite(userDraftInvite: UserDraftInvite!): UserDraftOperationsResult! + + """""" + deleteUserInvite(userDraftId: UUID!): UserDraftOperationsResult! + + """ + Кидает ивенты о необходимости удаления студенческих проектов из гитлаба при переводе их в основу + """ + deleteStudentGitlabIntensiveProjects(stageGroupId: ID!): Boolean! + + """ + Кидает ивенты о необходимости блокировки студентов определенного класса и отмену их штрафов + """ + blockUsersOfStageGroup(stageGroupId: ID!): Boolean! + + """ + Кидает ивенты о необходимости блокировки студентов определенной группы по предмету и отмену их штрафов + """ + blockUsersOfStageSubjectGroup(stageSubjectGroupId: ID!): Boolean! @deprecated(reason: "use school21 mutation") + + """Скидывает конструкторы локального курса до глобального""" + dropLocalCourseGoalConditionsToGlobal(localCourseId: ID!): Boolean! + + """Перезапуск сохранения текущей версии плана для студентов с ошибкой""" + retryS21ClassPlanSavingWithCurrentVersion(stageSubjectGroupPlanId: ID!): Boolean! @deprecated(reason: "Функция работает не стабильно и временно отключена. Доработки будут реализованы в рамках S21-19562") + + """""" + revertS21ClassPlanToLastSuccessVersion(stageSubjectGroupPlanId: ID!): Boolean! + + """Отметить версию черновика расписания как просмотренную""" + markTimeTableDraftAsViewed(timetableDraftId: ID!): Boolean! + + """Мутация создает или изменяет уже существующий набор форм контроля""" + saveLearningActivitySet(learningActivitySetInput: LearningActivitySetInput!): LearningActivitySet + + """ + Удаляет все элементы для переданного набора, а затем и сам переданный набор форм контроля + """ + deleteLearningActivitySet(learningActivitySetId: ID!): Boolean! + + """Удаляет переданную форму контроля из набора""" + deleteLearningActivitySetElement(learningActivitySetElementId: ID!): Boolean! + + """ + Мутация пытается добавить каждую форму контроля для переданных массивов + """ + addStudyStepSubjectLearningActivities(learningActivitySetElementIds: [ID!]!, subjectIds: [ID!]!, studyStepId: ID!): AddStudyStepSubjectLearningActivitiesResult + + """Мутация удаляет переданную форму контроля по идентификатору""" + deleteStudyStepSubjectLearningActivity(studyStepSubjectLearningActivityId: ID!): Boolean! + + """Создать кластер в Ш21""" + createOrUpdateS21Cluster(classroomInputModel: ClassRoomInputModel!, planMeta: String!): Int! + + """Вкл\выкл кластера в Ш21""" + changeClusterState(clusterId: Int!, isActive: Boolean!): Int! + + """Удалить черновик кластера в Ш21""" + deleteClusterDraft(clusterId: Int!): Int! + + """Сохранение email на класс для помощи студентам Bootcamp""" + saveStageGroupHelpEmail(stageGroupId: ID!, enabled: Boolean!, email: String): StageGroupHelpEmailModel! + + """Перевод класса в архив Bootcamp""" + stageGroupToArchive(stageGroupId: ID!): Boolean! + + """Восстановление класса из архива Bootcamp""" + stageGroupFromArchive(stageGroupId: ID!): Boolean! + + """удаление гитлаб-проектов по параметрам""" + deleteGitlabProjects(taskId: Int, schoolId: UUID, stageId: Int, stageGroupId: Int, studentState: StudentStateEnum): DeleteGitlabProjectsResponse! + + """удаление гитлаб-проектов по идентификаторам""" + deleteGitlabProjectsByExternalSystemProjectIds(projectIds: [Int!]!): DeleteGitlabProjectsResponse! + + """""" + createBadgeAward(badgeInput: BadgeAwardInput!): Award! + + """Копирование награды по идентификатору""" + copyBadgeAward(awardId: ID!): Award! + + """""" + editBadgeAward(awardId: ID!, badgeAwardInput: BadgeAwardInput!): Award! + + """""" + archiveAward(awardId: ID!): Award! + + """""" + createAvatar(avatarInput: AvatarInput!): ID! + + """""" + editAvatar(avatarId: ID!, avatarInput: AvatarInput!): Boolean! + + """""" + setExpTaskTypePower(expTaskTypeId: ID!, power: Int!): Boolean! @deprecated(reason: "Достаточно старая реализация. Не не использовать!") + + """""" + editExperienceLevelRange(expLevelId: ID!, rangeInputModel: ExperienceLevelRangeInput): Boolean! + + """Изменение баллов коалиций в рамках турнира""" + changeCoalitionPoints( + """ID турнира""" + tournamentId: ID! + + """Список коалиции, кому накинуть/отнять баллы""" + changeCoalitionPoints: [ChangeCoalitionPointsInput!]! + ): Boolean! + + """Изменение баллов участников коалиции в текущем активном турнире""" + changeCoalitionMemberPoints( + """ID коалиции""" + coalitionId: ID! + + """Список участников коалиции, кому накинуть/отнять баллы""" + changeCoalitionMemberPoints: [ChangeCoalitionMemberPointsInput!]! + ): Boolean! + + """Удаляем турнир и всю инфу об участниках""" + deleteGameTournament(gameTournamentId: ID!): Boolean! + + """Завершаем турнир по ID""" + closeTournament(tournamentId: ID!): GameTournament! + + """Удаляем коалицию и всю инфу об участниках""" + deleteGameCoalition(gameCoalitionId: ID!): Boolean! + + """Массовая выдача награды ученикам""" + S21MassAddAwardToUsers(logins: [String!]!, awardId: ID!, comment: String): S21MassAddAwardToUsersResponse! + + """Массовая выдача награды ученикам по фильтру""" + S21MassAddAwardToUsersByFilter(awardId: ID!, comment: String, login: String, stageGroupId: ID, stageId: ID, experienceLevelId: ID, coalitionId: ID): S21MassAddAwardToUsersResponse! + + """Массовая выдача игровых монет""" + S21CoinsGroupTransaction(logins: [String!]!, comment: String, transactionAmount: Int!): Boolean! @deprecated(reason: "Используйте S21CoinsGroupTransactionV2, возвращающий результат операции") + + """Массовая выдача игровых монет""" + S21CoinsGroupTransactionV2(logins: [String!]!, comment: String, transactionAmount: Int!): GroupCoinsTransactionResponseModel! + + """Массовая выдача монет ученикам по фильтру""" + S21CoinsGroupTransactionByFilter(login: String, stageGroupId: ID, stageId: ID, experienceLevelId: ID, coalitionId: ID, comment: String, transactionAmount: Int!): Boolean! @deprecated(reason: "Используйте S21CoinsGroupTransactionByFilterV2, возвращающий результат операции") + + """Массовая выдача монет ученикам по фильтру""" + S21CoinsGroupTransactionByFilterV2(login: String, stageGroupId: ID, stageId: ID, experienceLevelId: ID, coalitionId: ID, comment: String, transactionAmount: Int!): GroupCoinsTransactionResponseModel! + + """Выдача очков коалиции по логинам""" + changeCoalitionMemberPointsByLogins(logins: [String!]!, amount: Int!, comment: String): ChangeCoalitionMemberPointsResponse! + + """Выдача очков коалиции по логинам""" + changeCoalitionMemberPointsByFilter(login: String, stageGroupId: ID, stageId: ID, experienceLevelId: ID, coalitionId: ID, amount: Int!, comment: String): ChangeCoalitionMemberPointsResponse! + + """Перевести студента в новую коалицию""" + moveToAnotherCoalition(userId: ID!, newCoalitionId: Int!): CoalitionMember! +} + +"""""" +type BusinessAdminQueries { + """Возвращает список регионов России""" + getAllRegions: [Region!]! @deprecated(reason: "Запрос для получения всех регионов в UserQueries") + + """Метод возвращает траектории учеников""" + getTrajectories: [String!] + + """Возращает здания кабинетами""" + getBuildings: [Building!]! + + """ + Возвращает все Группы по Предмету БА (stage_subject_groups) по идентификатору академического года (academic_years.academic_year_id) + """ + getClassSubjectsByAcademicYearId(academicYearId: ID!): [ClassSubject!]! + + """ + выдает список академических лет школы. Если не передать schoolId, выдаст по текущей + """ + getAcademicYears(schoolId: ID): [AcademicYear!]! @deprecated(reason: "Рекомендуется использовать оптимизированный запрос getStageGroupsV2") + + """""" + getStageGroups(academicYearId: ID!, isIntergroup: Boolean, filterStageSubjectGroupLearningTypes: [LearningTypeEnum!]): [StageGroupAggregated!]! + + """Возвращает список классов в академическом году в контексте БА""" + getStageGroupsV2(academicYearId: ID!, isIntergroup: Boolean): [StageGroupV2!]! + + """выдает список классов школы в заданном году и заданной параллели""" + getStageGroupsByFilter(academicYearId: ID!, stageId: ID, stageIds: [ID!], isIntergroup: Boolean): [StageGroup!]! + + """ + Выдает расширенную информацию по классу. В список ГКпП попадают только с типом обучения из filterStageSubjectGroupLearningTypes + Если filterStageSubjectGroupLearningTypes == null, то возвращаются ГКпП с типом обучения BASE_LEARNING, EXTERNAL_LEARNING + """ + getStageGroup(stageGroupId: ID!, filterStageSubjectGroupLearningTypes: [LearningTypeEnum!]): StageGroupExtended! + + """""" + getStudyPeriod(studyPeriodId: ID!): StudyPeriod! + + """""" + getStages(academicYearId: ID!): [Int!] + + """""" + getStageConfigurations(isSchool21: Boolean): [StageConfiguration!]! + + """""" + getStageById(stageId: ID!): Stage! + + """""" + getStagesWithNames(academicYearId: ID!): [Stage!]! + + """получения стандартных параллелей 1-11 классов из""" + getAllStages: [Stage!]! + + """""" + getStudyPeriodSets(academicYearId: ID!): [StudyPeriodSet!]! + + """""" + getTimeSlotSets: [TimeSlotSet!]! + + """""" + getStageGroupsWithTimeslotSetIds(academicYearId: ID!): [StageGroupWithTimeslotSetId!]! + + """""" + getMarkTypes: [String!]! + + """""" + getSchoolMarks: schoolMarkSet! @deprecated + + """Проверка возможности удаления таймслота""" + checkIfCanDeleteTimeSlot(timeSlotId: ID!): Boolean! + + """Проверка возможности удаления набора таймслотов""" + checkIfCanDeleteTimeSlotSet(timeSlotSetId: ID!): Boolean! + + """Возвращает все Классы по Предмету в текущей Школе""" + getClassSubjects: [ClassSubject!]! + + """ + Возвращает все Классы по Предмету в текущей Школе c поиском по н азванию + """ + getClassSubjectsByClassName(className: String, offset: Int!, limit: Int!): [ClassSubject!]! + + """ + Возвращает Классы по Предмету по массиву идентификаторов (stage_subject_groups.stage_subject_group_id) + """ + getClassSubjectsByIds(classSubjectIds: [ID!]!): [ClassSubject!]! + + """ + Возвращает развернутую информацию о предмете класса, его модулях и количестве заданий в их плейлистах + (в методе getClassSubjectsByIds считается общее количество заданий, не по плейлисту) + """ + getClassSubjectsExtendedInfo(classSubjectIds: [ID!]!): [ClassSubject!]! + + """поиск учебной программы за год""" + getStudyProgram(academicYearId: ID!): StudyProgram + + """ + Получение рекомендуемого кол-ва дней на учебный модуь в соотношении (Идентификатор цели, кол-во дне на учебный модуь) + """ + getRecommendedDurationForModules(goalIds: [ID!]!, classSubjectId: ID!): [GoalDurationMap!]! + + """ + получить список пользователей с ролями, статусами и ролеспецифичными данными. + Фильтры: роли - только учитель, ученик, БА и только в текущей школе + """ + getUsers( + """""" + sortingFields: [SortingField] + + """""" + filterUserStatus: UserStatus + + """""" + filterRoleStatus: RoleStatus + + """""" + filterRoles: [String] + + """""" + filterSchools: [ID] + + """""" + filterStageGroups: [ID] + + """""" + filterSubjects: [ID] + + """""" + filterConfiguredUsers: Boolean + + """""" + excludedUserIds: [ID!] + + """""" + graduationDateTimeStart: DateTime + + """""" + graduationDateTimeEnd: DateTime + + """""" + creationDateTimeStart: DateTime + + """""" + creationDateTimeEnd: DateTime + + """""" + dismissTypeId: Int + + """""" + dismissDateStart: DateTime + + """""" + dismissDateEnd: DateTime + + """""" + birthdayStart: Date + + """""" + birthdayEnd: Date + + """""" + textSearch: String + + """""" + paging: PagingInput + + """""" + froleSetIds: [UUID!] + + """ + Идентификаторы объектов (продукт/кампус), которые определяют уровень иерархии пользователей при фильтрации + """ + entityIds: [String!] + + """ + Показывать только роли для переданных школ в поле filterSchools, по умолчанию false + Если значение false, то это означает, что filterSchools влияет только на поиск самих пользователей, + а роли этого пользователя будут отоброжаться для все школ + """ + showRolesOnlyForFilteredSchools: Boolean + ): [User]! + + """ + Предыдущая версия - getUsers + Реализован дополнительный контроль за возвращаемыми персональными данными с обязательной пагинацией + """ + getUsersV2( + """""" + sortingFields: [SortingField] + + """""" + filterUserStatus: UserStatus + + """""" + filterRoleStatus: RoleStatus + + """""" + filterStudentStatus: [StudentStatus!] + + """""" + filterRoles: [String] + + """""" + filterSchools: [ID] + + """""" + filterStageGroups: [ID] + + """""" + filterSubjects: [ID] + + """""" + filterConfiguredUsers: Boolean + + """""" + graduationDateTimeStart: DateTime + + """""" + graduationDateTimeEnd: DateTime + + """""" + creationDateTimeStart: DateTime + + """""" + creationDateTimeEnd: DateTime + + """""" + dismissTypeId: Int + + """""" + dismissDateStart: DateTime + + """""" + dismissDateEnd: DateTime + + """""" + birthdayStart: Date + + """""" + birthdayEnd: Date + + """""" + textSearch: String + + """""" + paging: PagingInput! + + """""" + froleSetIds: [UUID!] + + """ + Идентификаторы объектов (продукт/кампус), которые определяют уровень иерархии пользователей при фильтрации + """ + entityIds: [String!] + + """ + Показывать только роли для переданных школ в поле filterSchools, по умолчанию false + Если значение false, то это означает, что filterSchools влияет только на поиск самих пользователей, + а роли этого пользователя будут отоброжаться для все школ + """ + showRolesOnlyForFilteredSchools: Boolean + ): [User]! + + """Получение списка пользователей с удаленными ролями в школе""" + getUsersWithDeletedRoles( + """""" + sortingFields: [SortingField!] + + """ + Идентификатор пользователя, не null при поиске удаленных ролей для конкретного пользователя + """ + userId: UUID + + """Текстовый фильтр по ФИО и логину пользователей""" + textSearch: String + + """""" + paging: PagingInput + ): [UserWithDeletedRole!]! + + """Получение количества пользователей с удаленными ролями в школе""" + getUsersWithDeletedRolesCount( + """ + Идентификатор пользователя, не null при поиске удаленных ролей для конкретного пользователя + """ + userId: UUID + + """Текстовый фильтр по ФИО и логину пользователей""" + textSearch: String + ): Int! + + """ + Получение списка Учеников в контекстной школе по фильтрам + Не возвращает учеников классов внешнего обучения + """ + getStudentAccounts( + """""" + sortingFields: [SortingField] + + """фильтр статуса пользователя""" + filterUserStatus: UserStatus + + """фильтр статуса роли ученика (активна или нет)""" + filterRoleStatus: RoleStatus + + """фильтр статуса учеников - Учится, Выпущен, Не сконфигурирован""" + filterStudentStatus: [StudentStatus!] + + """фильтр по классам учеников""" + filterStageGroups: [ID] + + """фильтры времени выпуска учеников""" + graduationDateTimeStart: DateTime + + """""" + graduationDateTimeEnd: DateTime + + """фильтры времени создания пользователей""" + creationDateTimeStart: DateTime + + """""" + creationDateTimeEnd: DateTime + + """фильтры дня рождения пользователей""" + birthdayStart: Date + + """""" + birthdayEnd: Date + + """текстовый фильтр по ФИО, логину и электронной почте пользователей""" + textSearch: String + + """""" + paging: PagingInput! + ): StudentAccountList! + + """Получение списка черновиков в контекстной школе по фильтрам""" + getUserDrafts( + """""" + sortingFields: [SortingField] + + """фильтры времени создания пользователей""" + creationDateTimeStart: DateTime + + """""" + creationDateTimeEnd: DateTime + + """фильтры дня рождения пользователей""" + birthdayStart: Date + + """""" + birthdayEnd: Date + + """текстовый фильтр по ФИО, логину и электронной почте пользователей""" + textSearch: String + + """""" + businessRoleType: String + + """""" + paging: PagingInput! + ): UserDraftList! + + """ + Получить информацию о родителях пользователя (ученика) в контекстной школе + """ + getUserParentsInfo(childUserId: ID!): [ParentUserInfo!]! + + """Получить историю переводов ученика между классами школы""" + getStudentStageGroupTransferHistory(studentId: ID!): [StudentStageGroupTransferInfo!]! + + """ + Получение списка классов, в которых учитель является классным руководителем + """ + getFormMasterStageGroups( + """Id учителя""" + userId: UUID! + + """ + Id учебного года. Если год не указан - возвращает классы за все учебные года + """ + academicYearId: ID + ): [StageGroupInfo]! + + """ + Получение списка классов, в которых учитель ведет какие-либо предметы (предметные группы) + """ + getTeacherStageGroups( + """Id учителя""" + userId: UUID! + + """ + Id учебного года. Если год не указан - возвращает классы за все учебные года + """ + academicYearId: ID + ): [StageGroupInfo] + + """количество записей для getUsers""" + getUsersCount( + """""" + filterUserStatus: UserStatus + + """""" + filterRoleStatus: RoleStatus + + """""" + filterRoles: [String] + + """""" + filterSchools: [ID] + + """""" + filterStageGroups: [ID] + + """""" + filterSubjects: [ID] + + """""" + filterConfiguredUsers: Boolean + + """""" + excludedUserIds: [ID!] + + """""" + graduationDateTimeStart: DateTime + + """""" + graduationDateTimeEnd: DateTime + + """""" + creationDateTimeStart: DateTime + + """""" + creationDateTimeEnd: DateTime + + """""" + dismissTypeId: Int + + """""" + dismissDateStart: DateTime + + """""" + dismissDateEnd: DateTime + + """""" + birthdayStart: Date + + """""" + birthdayEnd: Date + + """""" + textSearch: String + + """""" + froleSetIds: [UUID!] + + """ + Идентификаторы объектов (продукт/кампус), которые определяют уровень иерархии пользователей при фильтрации + """ + entityIds: [String!] + ): Int! + + """""" + getUsersCountV2( + """""" + filterUserStatus: UserStatus + + """""" + filterRoleStatus: RoleStatus + + """""" + filterStudentStatus: [StudentStatus!] + + """""" + filterRoles: [String] + + """""" + filterSchools: [ID] + + """""" + filterStageGroups: [ID] + + """""" + filterSubjects: [ID] + + """""" + filterConfiguredUsers: Boolean + + """""" + graduationDateTimeStart: DateTime + + """""" + graduationDateTimeEnd: DateTime + + """""" + creationDateTimeStart: DateTime + + """""" + creationDateTimeEnd: DateTime + + """""" + dismissTypeId: Int + + """""" + dismissDateStart: DateTime + + """""" + dismissDateEnd: DateTime + + """""" + birthdayStart: Date + + """""" + birthdayEnd: Date + + """""" + textSearch: String + + """""" + froleSetIds: [UUID!] + + """ + Идентификаторы объектов (продукт/кампус), которые определяют уровень иерархии пользователей при фильтрации + """ + entityIds: [String!] + ): Int! + + """ + получить пользователя с ролями (учитель, ученик, БА), статусами и ролеспецифичными данными. + """ + getUser(userId: ID!): User! + + """получить информацию об настроенных типах аутентификации пользователя""" + getUserCredentialsInfo(userId: ID!): UserCredentialsInfo! + + """список доступных пермишенов""" + getAvailablePermissions: [String!]! + + """список функциоальных ролей по ролям и школам""" + getFunctionalRoles(request: [SchoolFunctionalRoleInput!]!): [FunctionalRole!]! + + """""" + getSchools( + """Строка поиска""" + textSearch: String + + """Параметры сортировки""" + sortingFields: [SortingField] + + """Параметры пагинации""" + paging: PagingInput + ): [School!]! + + """""" + getSchool(schoolId: ID!): School! + + """""" + getSafeSchoolsByIds( + """ИД школ""" + ids: [UUID!]! + ): [SafeSchool!]! + + """""" + getSchoolsCount: Int! + + """""" + getSchoolsTags: [SchoolTag!]! + + """Возвращает все школы (безопасные, без доп.инфы)""" + getSchoolsTagsByCurrentRegion: [SchoolTag!]! + + """""" + getSchoolsTagsByRegions(regionIds: [UUID!]): [SchoolTag!]! + + """""" + getAllSafeSchool( + """ + фильтр активных школ: null - все, true - активные, false - деактивированные + """ + isActive: Boolean + ): [SafeSchool!]! + + """ + Возвращает текущие Группы по Предмету Учителя (stage_subject_groups) + по идентификатору Предмета (subjects.subject_id) и идентифкатору параллели (stages.stage_id) + """ + getClassSubjectsBySubjectIdAndStageId(subjectId: ID!, stageId: ID!, schoolId: UUID): [ClassSubject!]! + + """ + Возвращает "соседние" Группы по Предмету (stage_subject_groups) по идентификатору группы + соседние по предмету(subjects.subject_id), идентификатору параллели (stages.stage_id) и году (academic_years) + """ + getNestedClassSubjectsByStageSubjectGroupId(stageSubjectGroupId: ID!): [ClassSubject!]! + + """Получить Планы на все Группы Класса по Предмету в текущей школе""" + getClassSubjectPlansByAcademicYearId( + """Идентификатор академического года (academic_years.academic_year_id)""" + academicYearId: ID! + + """ + Фильтр по типу обучения для ГКпП, если null, то возвращаются планы для ГКпП с типом обучения BASE_LEARNING, EXTERNAL_LEARNING + """ + filterStageSubjectGroupLearningTypes: [LearningTypeEnum!] + + """Фильтр по идентификатору предмета""" + filterSubjectId: ID + + """Фильтр по идентификатору параллели""" + filterStageId: ID + + """Фильтр по названию ГКпП""" + filterStageSubjectGroupName: String + ): [ClassSubject!]! + + """проверка при переводе учеников между группами по предметам""" + preventSaveClassSubjectGroupStudents(classSubject: ClassSubjectInput!): [SaveSubjectGroupStudentsMessage!]! + + """ + список классов (для завуча все классы, для учителя его классы, возможны фильтры по параллели и учебному году) + """ + getStageGroupsBySchoolAndTeacher(stageId: ID, academicYearId: ID): [StageGroupInfo!]! + + """ + список предметов для класса (для учителя только его предметы, для классного руководителя его предмет и предметы его класса) + """ + getSubjectsByStageGroupAntSchoolAndTeacher(stageGroupId: ID!): [Subject!]! + + """список предметов, для которых в учебном году есть активные группы""" + getSubjectsByAcademicYearId(academicYearId: ID!): [Subject!]! + + """ + список групп по предмету по классу и предмету (для учителя только его предметы, для классного руководителя его предмет и предметы его класса) + """ + getStageSubjectGroupsByStageGroupAndSubject(stageGroupId: ID!, subjectId: ID!): [StageSubjectGroup!]! + + """список гкпп по классу и предмету параллели""" + getStageSubjectGroupsByStageGroupAndStageSubjects(stageGroupId: ID!, stageSubjectIds: [ID!]!): [StageSubjectGroup!]! + + """получить список гкпп по идентификатору класса и строке поиска""" + getStageSubjectGroupsByStageGroupIdAndFilter(stageGroupId: ID!, pagingInput: PagingInput!, searchString: String): [StageSubjectGroupExtended!]! + + """получение списка студентов класса вместе с ГКПП по классу и предмету""" + getStudentsWithStageSubjectGroupByFilter(stageGroupId: ID!, stageSubjectId: ID!, studentFullNameSearchString: String, pagingInput: PagingInput!): [StudentWithStageSubjectGroup!]! + + """получение списка студентов ГКПП""" + getStudentsByStageSubjectGroup(stageSubjectGroupId: ID!, studentFullNameSearchString: String, pagingInput: PagingInput!): [StudentWithUser!]! + + """учебные периоды""" + getStudyPeriodsByStudyPeriodSet(studyPeriodSetId: ID!): [StudyPeriod!]! + + """модули по периоду и группе по предметам""" + getGoalsByDatePeriodAndStageSubjectGroup(startDate: DateTime, endDate: DateTime, stageSubjectGroupId: ID!): [Goal!]! + + """ + Получение списка модулей в рамках школы, у которых заведена контрольная работа + """ + getControlWorksModules: [ClassSubjectControlWork!]! + + """Получение списка экзаминационных модулей в рамках школы""" + getExamModules( + """фильтр по названию экзаменационного модуля""" + textInput: String + + """Параметры пагинации""" + page: PagingInput! + ): [StudyModule]! + + """ + Метод возвращает количество событий по идентификатору школы вызывающего и по списку типов событий + """ + getCalendarEventsCount( + """идентификаторы типа события""" + eventCodes: [String!]! + + """Параметр для получения мероприятий до указанного времени""" + before: DateTime + + """Параметр для получения мероприятий после указанного времени""" + after: DateTime + + """Параметр фильтра по дате окончания до""" + endDateBefore: DateTime + + """Параметр фильтра по дате окончания после""" + endDateAfter: DateTime + + """Фильтр по статусам предложенных мероприятий""" + statuses: [ParticipantEventStatus] + + """Фильтр по названию мероприятия""" + nameFilter: String + ): Int! + + """ + Метод возвращает список групповых модулей, имеющих p2p проверки, по идентификатору школы вызывающего + """ + getModulesForFreeSlot: [Goal!]! @deprecated(reason: "Следует использовать sc21BaCalendar.getModulesForFreeSlot") + + """Получение списка студентов, зарегистрированных на экзамен""" + getExamStudents( + """Идентификатор экзамена""" + examId: ID! + + """Параметры пагинации""" + page: PagingInput! + ): [StudentEvent!]! @deprecated(reason: "Следует использовать общую реализацию businessAdmin.getEventStudents") + + """Получение списка событий "Экзамен" по параметрам""" + getExamsByFilter( + """Параметры поиска""" + params: ExamEventsSearchParametersInput! + + """Список полей сортировки""" + sortingFields: [SortingField] + + """Параметры пагинации""" + paging: PagingInput! + ): [Exam!]! + + """Получение количества записей для запроса getExamsByFilter""" + getExamsByFilterCount( + """Параметры поиска""" + params: ExamEventsSearchParametersInput! + ): Int! + + """Получение списка событий "Экзамен" по идентификатору школу""" + getExams( + """Параметры сортировки""" + sortingField: SortingField + + """Параметры пагинации""" + page: PagingInput! + ): [Exam!]! + + """Получение экзамена по идентификатору""" + getExam(examId: ID!): Exam! + + """Получение количестова экзаменов по идентификатору школы""" + getExamCount: Int! + + """Получение списка отзывов по идентификатору мероприятия""" + getActivityEventFeedback(activityEventId: ID!, page: PagingInput!): [StudentEventFeedback]! @deprecated(reason: "use event.getActivityEventFeedback") + + """Получение количества отзывов по идентификатору мероприятия""" + getActivityEventFeedbackCount(activityEventId: ID!): Int! @deprecated(reason: "use event.getActivityEventFeedbackCount") + + """S21. Получение отчета по проведенным мероприятиям""" + getEventsReport(from: DateTime!, to: DateTime!, eventCodes: [String!]!, timeZone: String, schoolId: UUID): ReportExcelFile! @deprecated(reason: "use school21 query") + + """Получение списка типов мероприятий""" + getActivityTypes: [ActivityType!]! @deprecated(reason: "use School21:getActivityTypes") + + """Получение списка параллелей для мероприятия""" + getStagesByActivityId(activityEventId: ID!): [Stage!]! + + """Получение списка уровней студентов для мероприятия""" + getStudentsLevelsByActivityId(activityEventId: ID!): [ExperienceLevel!]! + + """Получение списка уровней студентов""" + getStudentsLevels: [ExperienceLevel!]! + + """Получение списка классов для мероприятия""" + getStageGroupsByActivityId(activityEventId: ID!): [StageGroup!]! + + """Получение общего количества студентов, зарегистрированных на экзамен""" + getCurrentStudentCountByExamID(examId: ID!): Int! + + """Получение фильтров для отчета БМ (Буткэмп Мастер)""" + getContentFilterData: [ContentFilterData!]! + + """Получение коалиций мероприятия""" + getCoalitionsByActivityId(activityEventId: ID!): [GameCoalition!]! + + """Получение коалиций для параллели""" + getCoalitionsBySchoolIdAndStageId(schoolId: UUID!, stageId: ID!): [GameCoalition!]! + + """ + Запрос настроек условий заданного типа для модуля (проекта, цели) в локальном курсе (группе проектов) + """ + loadTaskEvaluationRuleGroupsFromLocalCourse(localCourseGoalId: ID!, conditionType: ConditionType!): EvaluationRuleGroupsWithEquivalentFlag! + + """Возвращает план на параллель по идентификатору""" + getS21StagePlan(stagePlanId: ID!): S21StagePlan! + + """Возвращает план на параллель по идентификатору c групповыми проектами""" + getS21StageGroupPlan(stagePlanId: ID!, schoolId: UUID): S21StagePlan! + + """Возвращает план на параллель по идентификатору глобального плана""" + getS21StagePlanByGlobalPlanId(globalPlanId: ID!): S21StagePlan! + + """Возвращает все существующие планы на параллель""" + getS21StagePlans(schoolId: UUID): [S21StagePlan!]! + + """ + Получение списка адресов психологов с перечнем класов привязанных к адресу психолога + """ + getStageGroupPsychologistEmails: [StageGroupPsychologistEmail!]! + + """Получение параметров расчета навыков за проверку задания""" + getTaskAdditionalAttributes(taskId: ID!): AdditionalAttributes! + + """Возвращает план на класс по идентификатору""" + getS21ClassPlan(classPlanId: ID!): S21ClassPlan! + + """Возвращает план на класс по идентификатору плана на параллель""" + getS21ClassPlanByStagePlanId(stagePlanId: ID!, classSubjectId: ID!): S21ClassPlan! + + """Возвращает все существующие планы на класс""" + getS21ClassPlans: [S21ClassPlanByStagesSubjects!]! + + """Возвращает план на класс по идентификатору группы по предмету""" + getS21ClassPlanByStageSubjectGroupId(stageSubjectGroupId: ID!): S21ClassPlan! + + """ + Получение списка предметов, принадлежащих образовательному учреждению или его тенантам + """ + getSubjectsByOrgUnitId(orgUnitId: ID!): [Subject!]! + + """ + Получение списка тенантов образовательного учреждения текущего пользователя с доступом на чтение + """ + loadTenantsWithReadAccess: [School!]! + + """ + Получение списка тенантов образовательного учреждения текущего пользователя с доступом на запись + """ + loadTenantsWithWriteAccess: [School!]! @deprecated(reason: "Использовать запрос checkHowToDeleteClassroom") + + """""" + checkIfCanDeleteClassroom(classroomId: ID!): Boolean! + + """ + Проверка возможности удаления кабинета в зависимости от связанных объектов + """ + checkHowToDeleteClassroom(classroomId: ID!): ClassroomDeletionCode! + + """Проверка возможности удаления класса""" + checkIfCanDeleteStageGroup(stageGroupId: ID!): Boolean! @deprecated(reason: "Проверка проводится при сохранении набора учебных периодов saveStudyPeriodSet. Под удаление") + + """""" + checkIfCanDeleteStudyPeriods(studyPeriodSetId: ID!, studyPeriodId: ID, lastStudyPeriod: Boolean!): Boolean! @deprecated(reason: "Проверка проводится при сохранении набора учебных периодов saveStudyPeriodSet. Под удаление") + + """""" + checkIfCanDeleteStage(studyPeriodSetId: ID!, stageId: ID!): Boolean! + + """Запрос группы параметров комманды для проекта из локального курса""" + getTeamSettingsGroupFromLocalCourseGoal(localCourseGoalId: ID!): TeamSettingsGroupWithEquivalentFlag! + + """S21. Запрос отчета по успеваемости абитуриентов""" + loadStudentsPerformanceS21Report(stageSubjectGroupId: Int!, timeZone: String, schoolId: UUID): ReportExcelFile! @deprecated(reason: "use school21 query") + + """S21. Запрос отчета по командам""" + loadStudentsTeamS21Report(stageId: ID!, stageSubjectGroupId: ID, goalId: ID, timeZone: String, schoolId: UUID): ReportExcelFile! @deprecated(reason: "use school21 query") + + """Запрос всех групп класса по предмету для школы""" + findAllStageSubjectGroupsOfSchool(schoolId: UUID): [StageSubjectGroup!]! + + """ + Получение информации о команде в групповом задании по ид проверяемого ответа + """ + getProjectTeamMembersByAnswerId(studentAnswerId: ID!): ProjectTeamMembers + + """получение планов на параллель""" + getStagePlansByIds(stagePlansIds: [ID!]!): [StagePlan!]! + + """Получение курсов с учетом фильтров""" + getCourses( + """Список курсов которые надо исключить из выдачи""" + filterExceptCourses: [ID] + + """Строка поиска (по имени)""" + name: String + + """Список тегов""" + tags: [String!] + + """Тип курса""" + courseType: CourseType + + """Список полей сортировки""" + sortingFields: [SortingField] + + """Параметры пагинации""" + paging: PagingInput + ): CourseSearchResult! + + """ + получение информации по посещаемости студента в школе и за рабочей станцией, за неделю (пн-вс) входящую в date + """ + getStudentTraffic(login: String!, schoolID: UUID!, date: Date!): StudentTraffic! + + """Информация о студентах на плане кластера""" + getClusterPlanStudents: ClusterPlanStudents! @deprecated(reason: "do not use. Will be deleted in 29.0") + + """ + Информация о студентах на плане кластера по идентификатору кластера (кабинета) + """ + getClusterPlanStudentsByClusterId(clusterId: ID): ClusterPlanStudents! + + """ + S21. Публичный профиль студента. Получение рабочей станции за которой авторизован студент по его логин + """ + getWorkstationByLogin(login: String!): WorkstationModel @deprecated(reason: "do not use. Will be deleted in 31.0") + + """Запрос пользователей с указанной функциональной ролью""" + getUsersByFunctionalRole(functionalRoleId: ID!): [User]! + + """Получение расписания по дням по всем классам""" + getTimetableByDays(beginDate: Date!, endDate: Date!, academicYearId: ID!): Timetable! + + """Получение списка дедлайнов по фильтрам""" + getDeadlines( + """Фильтр - является ли этот дедлайн персональным""" + isPersonal: Boolean + + """Фильтр по статусам дедлайнов""" + deadlineStatuses: [DeadlineStatus] + + """Фильтр по дате создания дедлайна после указанного времени""" + createdFrom: DateTime + + """Фильтр по дате создания дедлайна до указанного времени""" + createdTo: DateTime + + """Фильтр по дате дедлайна после указанного времени""" + deadlineFrom: DateTime + + """Фильтр по дате дедлайна до указанного времени""" + deadlineTo: DateTime + + """Фильтр по классам""" + stageGroupId: ID + + """Поля для сортировки""" + sorting: [SortingField] + + """Пагинация""" + page: PagingInput! + ): [Deadline]! + + """Получение количество дедлайнов по фильтрам""" + getDeadlinesCount( + """Фильтр - является ли этот дедлайн персональным""" + isPersonal: Boolean + + """Фильтр по статусам дедлайнов""" + deadlineStatuses: [DeadlineStatus] + + """Фильтр по дате создания дедлайна после указанного времени""" + createdFrom: DateTime + + """Фильтр по дате создания дедлайна до указанного времени""" + createdTo: DateTime + + """Фильтр по дате дедлайна после указанного времени""" + deadlineFrom: DateTime + + """Фильтр по дате дедлайна до указанного времени""" + deadlineTo: DateTime + + """Фильтр по классам""" + stageGroupId: ID + ): Int! + + """""" + getDeadlinesForStudents( + """""" + studentLogin: String + + """Фильтр - является ли этот дедлайн ближайшим""" + isClosest: Boolean! + + """Фильтр по статусам дедлайнов""" + deadlineStatuses: [DeadlineStatus!]! + + """""" + stageGroupId: ID + + """Фильтр по дате создания дедлайна после указанного времени""" + createdFrom: DateTime + + """Фильтр по дате создания дедлайна до указанного времени""" + createdTo: DateTime + + """Фильтр по дате дедлайна после указанного времени""" + deadlineFrom: DateTime + + """Фильтр по дате дедлайна до указанного времени""" + deadlineTo: DateTime + + """Поля для сортировки""" + sorting: [SortingField] + + """Пагинация""" + page: PagingInput! + ): [DeadlineStudentInfo]! @deprecated(reason: "Use school21 query") + + """Получение количество дедлайнов по фильтрам""" + getDeadlinesForStudentsCount( + """""" + studentLogin: String + + """Фильтр - является ли этот дедлайн ближайшим""" + isClosest: Boolean! + + """Фильтр по статусам дедлайнов""" + deadlineStatuses: [DeadlineStatus!]! + + """""" + stageGroupId: ID + + """Фильтр по дате создания дедлайна после указанного времени""" + createdFrom: DateTime + + """Фильтр по дате создания дедлайна до указанного времени""" + createdTo: DateTime + + """Фильтр по дате дедлайна после указанного времени""" + deadlineFrom: DateTime + + """Фильтр по дате дедлайна до указанного времени""" + deadlineTo: DateTime + ): Int! @deprecated(reason: "Use school21 query") + + """Получение списка запросов на отсрочку дедлайна""" + getDeadlineShiftRequests(login: String, createdFrom: DateTime, createdTo: DateTime, status: DeadlineShiftRequestStatus, stageGroup: ID, sorting: [SortingField], page: PagingInput!): [DeadlineShiftRequest]! + + """Получение количества запросов на отсрочку дедлайна по фильтрам""" + getShiftRequestsCount(login: String, createdFrom: DateTime, createdTo: DateTime, status: DeadlineShiftRequestStatus, stageGroup: ID): Int! + + """Получение дедлайна по айди""" + getDeadline(deadlineId: UUID!): Deadline! + + """Получение запроса на отсрочку по айди""" + getDeadlineShiftRequest(shiftRequestId: UUID!): DeadlineShiftRequestInfo! + + """Получить список учителей школы по фильтрам""" + getTeachersBySchoolAndFilters(teacherSearchInput: TeacherSearchInput!): [Teacher!]! + + """Получить расписание учителя""" + getTeacherTimetable(teacherId: UUID!, dateFrom: DateTime!, dateTo: DateTime!, academicYearId: ID!): TimetableGroupedByPeriods! + + """ + Агрегация списка классов школы по учителю в заданном академическом году. + Содержит только те ГКпП, в которых преподает учитель. + """ + getStageGroupsByTeacher(academicYearId: ID!, teacherId: UUID!): [StageGroupAggregated!]! + + """Получение списка системных уведомлений для текущей школы без плашки""" + getSystemNotificationsWithoutCommon( + """Параметры сортировки""" + sortingFields: [SortingField] + + """Строка поиска""" + textSearch: String + + """Параметры пагинации""" + paging: PagingInput + ): [SystemNotification!]! + + """Получение списка школ по регионам""" + findSchoolsByRegions(regionIds: [ID!]): [School!]! + + """Получение списка школ по региону текущей школы пользователя""" + findSchoolsByCurrentRegion: [School!]! + + """Получение урока по ID""" + getLesson(lessonId: ID!): Lesson! + + """ + Получение результата редактирования цепочки уроков для дальнейшей модификации уроков + """ + getLessonsTransferResult( + """Текущее время""" + now: DateTime! + + """Отредактированный урок (идентификатор урока обязателен)""" + lessonInput: LessonInput! + + """Признак, редактируем ли всю цепочку уроков""" + changeAllRepetitionsAtSameDayOfWeek: Boolean! + + """Дата окончания повторения уроков""" + repeatEndDate: Date! + + """Тип повторения""" + repeatType: CreateLessonRepeat! + ): [LessonTransferValidationResult!]! + + """Получение краткой информации по драфтам расписания по ID школы""" + getTimetableDraftSummariesPerSchool(schoolId: ID!): [TimetableDraftSummary!]! + + """Получить драфт расписания на неделю""" + getTimetableDraft(timetableDraftId: ID!): TimetableDraft! + + """Получить драфт расписания на неделю""" + getTimetableDraftV2(timetableDraftId: ID!): TimetableDraftV2! + + """ + Получение данных о количестве P2P проверок и средней оценке пользователя как ревьюера + """ + getFeedbackStatisticsAverageScore(studentId: UUID!): FeedbackStatisticsAverageScore! + + """Получение истории изменения опыта""" + getExperienceHistoryDate(userId: UUID!, schoolId: ID): UserExperienceHistoryDate! + + """ + S21. Публичный профиль студента. Получение всех волн (аналог stage_group_name) и форм обучения (аналог stage_name) по StudentId + """ + getStageGroupsS21PublicProfile(studentId: UUID!): [StageGroupS21] @deprecated(reason: "use school21 query") + + """Получение всех проектов по userId и stageGroupId""" + getStudentProjectsByStageGroup(studentId: UUID!, stageGroupId: ID!): [StudentItem]! + + """Запрос настроек повторного прохождения модуля""" + getModuleAttemptsSettings(goalId: ID!): ModuleAttemptsSettings + + """""" + getNotifications(paging: PagingInput, wasReadIncluded: Boolean): [Notification!]! + + """""" + getNotificationsByTypes( + """""" + typeIds: [ID!]! + + """""" + paging: PagingInput + + """""" + wasReadIncluded: Boolean + + """ + Необязательное поле, при передаче true вернет уведомления только за текущий учебный год + """ + includeOnlyCurrentYearNotifications: Boolean + ): [Notification!]! + + """""" + getNotificationsCount(wasReadIncluded: Boolean): Int! + + """ + Получение асинхронной задачи сохранения набора учебных периодов по идентификатору асинхронной задачи + """ + getSaveStudyPeriodSetAsyncTaskByAsyncTaskId(asyncTaskId: UUID!): AsyncTask! + + """ + Получение асинхронной задачи сохранения набора учебных периодов по идентификатору набора учебных периодов + """ + getSaveStudyPeriodSetAsyncTaskByStudyPeriodSetId(studyPeriodSetId: ID!): AsyncTask + + """ + S21. Публичный профиль студента. Получение UserId по Login пользователя + """ + getUserIdByLogin(login: String!): UUID @deprecated(reason: "use school21 query") + + """ + S21. Публичный профиль студента. Получение StudentId по Login пользователя, если нет studetnId - EMPTY_UUID + """ + getStudentIdByLogin(login: String!): UUID @deprecated(reason: "использовать getStudentByLogin") + + """ + S21. Публичный профиль студента. Получение SchoolId по Login пользователя, если нет schoolId - EMPTY_UUID + """ + getSchoolIdByLogin(login: String!): UUID @deprecated(reason: "использовать getStudentByLogin") + + """S21. Публичный профиль студента. Получение ссылки на автар по UserId""" + getAvatarByUserId(userId: UUID!): String @deprecated(reason: "use school21 query") + + """ + S21. Публичный профиль студента. Получение волны (аналог stage_group_name) и формы обучения (аналог stage_name) по StudentId + """ + getStageGroupS21PublicProfile(studentId: UUID!): StageGroupS21 @deprecated(reason: "use school21 query") + + """S21. Публичный профиль студента. Получение опыта по UserId""" + getExperiencePublicProfile(userId: UUID!): UserExperience @deprecated(reason: "use school21 query") + + """S21. Публичный профиль студента. Получение email по UserId""" + getEmailbyUserId(userId: UUID!): String @deprecated(reason: "use school21 query") + + """ + S21. Публичный профиль студента. Получение рабочей станции за которой авторизован студент по идентификатору студента + """ + getWorkstationByUserId(userId: UUID): WorkstationModel @deprecated(reason: "use school21 query") + + """ + S21. Публичный профиль студента. Получение класса в котором авторизован студент по его логину + """ + getClassRoomByLogin(login: String!): ClassRoom @deprecated(reason: "use school21 query") + + """ + S21. Публичный профиль студента. Получение достижений для публиличного профиля + """ + getBadgesPublicProfile(userId: UUID!): [UserBadgeAward!]! @deprecated(reason: "use school21 query") + + """ + S21. Публичный профиль студента. Получение навыков для публиличного профиля + """ + getSoftSkillsByStudentId(studentId: UUID!): [SoftSkillPower!]! @deprecated(reason: "use school21 query") + + """ + S21. Получение списка модулей плана для дашборда, в зависимости от id плана и и типа плана + """ + getPlanModulesForDashboard(planId: ID!, planType: PlanTypeForCondition!, paging: PagingInput, sorting: SortingField): DashboardPlanModules! + + """ + Запрос возвращает последнюю задачу по массовому переводу из учебного года. + """ + getLastMassTransferTask( + """Для какого учебного года ищем задачу""" + sourceAcademicYearId: ID! + ): MassTransferTask + + """Получить список курсов в классах которых есть привязка к проекту""" + getSuitableStagesForExam(academicYearId: ID!, goalId: ID!): [Stage!]! + + """ + Получить список классов по предмету в планах которых есть привязка к проекту + """ + getSuitableStageSubjectsForExam(academicYearId: ID!, goalId: ID!): [ClassSubject!]! + + """""" + getLearningActivitiesBySchool(schoolId: UUID!): [LearningActivity!]! + + """""" + getSubjectLearningActivities(schoolId: UUID!, subjectId: ID!): [LearningActivity!]! @deprecated(reason: "Use getLearningActivitySets") + + """""" + getLearningActivitiesBySchoolSubjects(schoolId: UUID!): [SubjectLearningActivities!]! @deprecated(reason: "Use getStudyStepSubjectLearningActivities") + + """Проверка наличия привязанных заданий к модулям""" + checkGoalsContainTasks(goalIds: [ID]!): Boolean! + + """ + Получение статуса заполнения обязательных данных для школы для начала учебного процесса (здания, кабинеты, звонки, ученики, учителя, классы) + """ + getSchoolMandatoryFilledData(schoolId: UUID!): SchoolMandatoryData! + + """Возвращает список школьных группы систем оценивания""" + getSchoolMarkTypeGroupsBySchool(schoolId: UUID!): [SchoolMarkTypeGroup!]! + + """Возвращает список систем оценивания""" + getGovernmentMarkTypes: [GovernmentMarkType!]! + + """ + Возвращает учебные активности с весами, настроенными для переданной школы + """ + getSchoolLearningActivityWeights(schoolId: UUID!): [LearningActivity!]! + + """Возвращает список конфигураций оценивания для переданной школы""" + getSchoolMarkTypeGroupConfigurations(schoolId: UUID!): [SchoolMarkTypeGroupConfiguration!]! + + """Возвращает список параллелей для переданной группы систем оценивания""" + getStagesBySchoolMarkTypeGroup(schoolMarkTypeGroupId: ID!): [Stage!]! + + """Возвращает список отметок для переданной системы оценивания""" + getSchoolMarksByGovernmentMarkType(governmentMarkTypeId: ID!): [SchoolMark!]! + + """Возвращает классы Ш21, на которые можно назначить дедлайны""" + getDeadlineStageGroups(academicYearId: ID!): [StageGroup!]! + + """""" + validateUserInviteEmail(field: String!, checkUserDraft: Boolean): UserDraftOperationsResult! + + """""" + validateUserInvitePhone(field: String!, checkUserDraft: Boolean): UserDraftOperationsResult! + + """Получить текущий статус по процессу сохранения плана на класс""" + getS21ClassPlanSavingProgress(stageSubjectGroupPlanId: Int!): S21ClassPlanSavingProgress! + + """Получение списка правил из Конструктора расписаний""" + getScheduleConstraints: [ScheduleConstraint!]! + + """ + Возвращает план урока по идентификатору. + Не бросает исключения, как getLessonPlanById, а возвращает описание ошибки и статус + """ + getLessonPlanByIdV2(lessonPlanId: ID!): LessonPlanV4Response! + + """Возвращает все наборы форм контроля для школы текущего пользователя""" + getLearningActivitySets: [LearningActivitySet!]! + + """ + Возвращает формы контроля и их атрибуты для предметов и уровней образования для текущей школы пользователя + """ + getStudyStepSubjectLearningActivities: [StudyStepSubjectLearningActivities!]! + + """""" + getClustersSummary(clusterState: ClusterState!, sortingFields: [SortingField]): [ClusterSummaryModel!]! + + """""" + getClassroomById(classroomId: Int!): ClassRoom! + + """ + Проверка корректности периодов плана (не переместились ли даты из будущего в прошлое) + """ + checkS21ClassPlanPeriodsRelocatedToPast(classPlan: S21ClassPlanInput!): [String!]! + + """ + Получение локальных настроек мультикампусности, опционально можно задать idForFilter и isStage для фильтрации + """ + getLocalMulticampusSettingAndAllStagesAndStageSubjectGroups( + """ + id параллели или класса в зависимости от того как выставлен флаг isStage + """ + idForFilter: ID + + """если true то idForFilter - id параллели, иначе id класса""" + isStage: Boolean + ): LocalMulticampusSettingAndAllStagesAndStageSubjectGroups! + + """поиск гитлаб-проектов по параметрам""" + findGitlabProjects(taskId: Int, schoolId: UUID, stageId: Int, stageGroupId: Int, studentState: StudentStateEnum, paging: PagingInput!): FindGitlabProjectsResponse! + + """скачивание гитлаб проектов в excel-file""" + loadGitlabProjectsAsExcelFile(taskId: Int, schoolId: UUID, stageId: Int, stageGroupId: Int, studentState: StudentStateEnum): GitlabProjectsExcelFile! + + """проверить externalSystemProjectIds на наличие в бд""" + checkGitlabProjectIdsExistence(projectIds: [Int!]!): GitlabProjectIdsExistenceResponse! + + """ + Поиск классов, в которых есть планы на класс с указанными модулями. Используется в Bootcamp + """ + findStageGroupsByGoalIdsFromStageSubjectGroupPlan(goalIds: [ID!]!): [StageGroupInfo!]! + + """Получение списка всех городов учеников""" + getBTCStudentCities: [String!]! + + """Получение списка всех Буткемп-мастеров""" + getBootcampMastersList: [BootcampMasterModel!]! + + """Получение списка учеников Bootcamp по student id""" + getBTCStudentsInfoForMyClasses(studentIds: [UUID!]!): [BTCStudentsInfoModel!]! + + """Получение списка классов, переведенных в архив Bootcamp""" + getArchiveStageGroups(stageGroupIds: [ID!]!): [ID!]! + + """""" + getBadges: [Badge!]! + + """""" + getAvatars: [Avatar!]! + + """Доступные награды для выдачи""" + getAwards(schoolId: ID, badgeKindTypeId: Int, assignmentTypeId: Int, awardName: String, sortingFields: [SortingField], page: PagingInput): [Award!]! + + """количество доступных наград для выдачи""" + getAwardsCount(schoolId: ID, badgeKindTypeId: Int, assignmentTypeId: Int, awardName: String): Int! + + """Получение награды по идентификатору""" + getAwardById(awardId: ID!): Award! + + """Получение всех уровней опыта""" + getAllExperienceLevels: [ExperienceLevel]! + + """Запрос истории получения ачивки""" + getUserAwardHistoryByAwardId(awardId: ID!, login: String, paging: PagingInput!): [UserAwardHistory!]! + + """ + Запрос истории получения ачивки c возможностью сортировать по awardDate + """ + getUserAwardHistoryByAwardIdV2(awardId: ID!, login: String, paging: PagingInput!, sortingFields: [SortingField!]!): [UserAwardHistory!]! + + """""" + getUserAwardHistoryByAwardIdCount(awardId: ID!, login: String): Int! + + """Список студентов в школе для выдачи достижения""" + getUsersToBadgeAward(awardId: ID!, login: String, stageGroupId: ID, stageId: ID, experienceLevelId: ID, coalitionId: ID, paging: PagingInput!): [UsersToBadgeAward!] + + """количество студентов в школе для выдачи достижения""" + getUsersToBadgeAwardCount(awardId: ID!, login: String, stageGroupId: ID, stageId: ID, experienceLevelId: ID, coalitionId: ID): Int! + + """ + Список студентов в школе для выдачи монет, с информацией по текущему кол-ву монет + """ + getUserCoins(login: String, stageGroupId: ID, stageId: ID, experienceLevelId: ID, coalitionId: ID, paging: PagingInput!): [UserCoins!] + + """ + кол-во студентов в школе по данным параметрам фильтра, для выдачи монет + """ + getUserCoinsCount(login: String, stageGroupId: ID, stageId: ID, experienceLevelId: ID, coalitionId: ID): Int! + + """История начисления\списание монет по пользователю""" + getUserCoinsHistory(userId: UUID!): UserCoinsHistoryModel! + + """Список пользователей участников коалиции""" + getSchoolGameCoalitionMembers(gameCoalitionId: Int!, offset: Int!, limit: Int!, searchString: String!, sortingFields: [SortingField!]): [User!]! + + """Ранги участников коалиции в турнире""" + getSchoolGameCoalitionTournamentMembers(gameCoalitionId: Int!, gameTournamentId: Int!, page: PagingInput!, searchString: String!, sortingFields: [SortingField!]!): [CoalitionMemberPowerRank!]! + + """Cписок коалиций""" + getSchoolGameCoalitions(offset: Int!, limit: Int!): [GameCoalition!]! + + """""" + getSchoolGameCoalitionsV2(schoolId: UUID!, nameSearch: String, stageId: Int, pagingInput: PagingInput, sortingFields: [SortingField!]): [GameCoalitionV2!]! + + """Общее кол-во коалиций в школе""" + getSchoolGameCoalitionsCount: Int! + + """Общее кол-во коалиций в школе с учетом фильтра""" + getSchoolGameCoalitionsCountV2(schoolId: UUID!, nameSearch: String, stageId: Int): Int! + + """Коалиция по ID""" + getSchoolGameCoalition(gameCoalitionId: Int!): GameCoalition! + + """Турнир по ID""" + getSchoolGameTournament(gameTournamentId: Int!): GameTournament! + + """Коалиции не учавствующие в турнире""" + getSchoolGameCoalitionsNotInTournament(gameTournamentId: ID!): [GameCoalition!]! @deprecated(reason: "EDU-44085б. Will be deleted in 29.0") + + """Список турниров""" + getSchoolGameTournaments(offset: Int!, limit: Int!, sortingFields: [SortingField!]): [GameTournament!]! + + """Общее кол-во турниров в школе""" + getSchoolGameTournamentsCount: Int! + + """Турниры за период""" + getSchoolGameTournamentsForTimes(timeStart: DateTime!, timeEnd: DateTime!, sortingFields: [SortingField!]): [GameTournament!]! + + """Незавершенные турниры""" + getUnfinishedTournaments(stageGroupId: Int!): [GameTournament!] + + """Незавершенные турниры для определенной группы по предмету""" + getUnfinishedTournamentsByStageSubjectGroup(stageSubjectGroupId: Int!): [GameTournament!] + + """Список мягких навыков""" + getSoftSkillTypes(isArchive: Boolean, sortingFields: [SortingField!]): [SoftSkillType!]! + + """Список бекграундов(подложек) для коалиций""" + getCoalitionBackgrounds: [CoalitionBackground!]! + + """Список аватаров для мастера трайба""" + getCoalitionMasterAvatars: [CoalitionMasterAvatar!]! + + """Получить сводную информация об участнике коалиции""" + getCoalitionMemberInfoModels(coalitionId: Int!, pagingInput: PagingInput!, searchString: String, sortingFields: [SortingField!]): [CoalitionMemberInfoModel!]! @deprecated(reason: "Используйте getLastGivingsV2") + + """""" + getLastGivings(userFilterInput: UserFilterInput!, pagingInput: PagingInput!): [UserLastGiving!]! + + """ + Получить краткую информацию о пользователе + информация о последних награждениях(любых) этого пользователя + """ + getLastGivingsV2(userFilterInput: UserFilterInput!, pagingInput: PagingInput!, sortingFields: [SortingField!]): [UserLastGiving!]! + + """Получить краткую информацию о пользователе + история его награждений""" + getUserGivingsHistoryByUserId(userId: UUID!, pagingInput: PagingInput!, sortingFields: [SortingField!]!): UserGivingsHistoryModel! + + """Получить кол-во пользователей найденных по данным параметрам фильтра""" + getUsersCountByFilter(userFilterInput: UserFilterInput!): Int! + + """провалидировать логины пользователей""" + validateLoginsForAwards(logins: [String!]!): LoginValidationResponse! + + """Обзор работы пользователей платформы.""" + getSchoolMonitoring(schoolMonitoringInput: SchoolMonitoringInput, currentRole: String): [SchoolMonitoring!]! + + """Учителя""" + getTeacherSchoolMetrics(teacherSchoolMetricsInput: SchoolMonitoringInput, currentRole: String!): [TeacherSchoolMetrics!]! + + """Учителя. Выгрузка в Excel.""" + getTeacherSchoolMetricsExcel(teacherSchoolMetricsInput: SchoolMonitoringInput!, showNullable: Boolean!, showNonNullable: Boolean!, reportDateTime: String!, currentRole: String): ReportExcelFile! + + """Задания на проверке""" + getTasksOnCheck(tasksDate: DateTime!, startDate: DateTime!, endDate: DateTime!, stageId: Int, stageGroupId: Int, subjectId: Int, stageSubjectGroupId: Int, currentRole: String!): [TasksOnCheck!]! + + """Задания на проверке. Выгрузка в Excel.""" + downloadTasksOnCheckExcel(tasksDate: DateTime!, startDate: DateTime!, endDate: DateTime!, stageId: Int, stageGroupId: Int, subjectId: Int, stageSubjectGroupId: Int, currentRole: String!, reportDateTime: String!): ReportExcelFile! + + """Задания на проверке более 7 дней по ученикам""" + getTasksOnCheckForMoreThan7DaysDetailed(currentRole: String): [TaskOnCheckDetailed!]! + + """Задания на проверке более 7 дней по ученикам. Выгрузка в Excel""" + downloadTasksOnCheckForMoreThan7DaysDetailedExcel(reportDateTime: String!, currentRole: String): ReportExcelFile! + + """Предметы""" + getModulesProgressBySubjectAndStageReport(startDate: DateTime!, endDate: DateTime!, currentRole: String!, stageSubjectGroupId: Int): [ModulesProgressBySubjectAndStage!]! + + """Предметы. Выгрузка в Excel.""" + downloadModulesProgressBySubjectAndStageExcel(startDate: DateTime!, endDate: DateTime!, currentRole: String!, reportDateTime: String!): ReportExcelFile! + + """Итоговые оценки""" + getStudyPeriodMarks(stageId: Int!, stageGroupId: Int, subjectId: Int, academicYearId: ID, currentRole: String): [StudyPeriodMark!]! + + """Итоговые оценки. Выгрузка в Excel""" + downloadStudyPeriodMarksExcel(stageId: Int!, stageGroupId: Int, subjectId: Int, reportDateTime: String!, academicYearId: ID, currentRole: String): ReportExcelFile! + + """Статистика. Успеваемость учеников""" + getStudentsAcademicPerformance(startDate: DateTime!, endDate: DateTime!, stageId: Int!, subjectId: Int, currentRole: String): [StudentAcademicPerformance!]! @deprecated(reason: "Использовать getStudentsAcademicPerformanceExpandedV2") + + """""" + getStudentsAcademicPerformanceExpanded(startDate: DateTime!, endDate: DateTime!, stageId: Int!, currentRole: String): [StudentAcademicPerformanceExpanded!]! + + """""" + getStudentsAcademicPerformanceExpandedV2(startDate: DateTime!, endDate: DateTime!, stageId: Int!, subjectId: Int, currentRole: String): [StudentAcademicPerformanceExpandedV2!]! + + """Статистика. Успеваемость учеников. Выгрузка в Excel.""" + downloadStudentsAcademicPerformanceExcel(startDate: DateTime!, endDate: DateTime!, stageId: Int!, reportDateTime: String!, currentRole: String): ReportExcelFile! + + """Статистика. Успеваемость учеников расширенная. Выгрузка в Excel.""" + downloadStudentsAcademicPerformanceExpandedExcel(startDate: DateTime!, endDate: DateTime!, stageId: Int!, subjectId: Int, reportDateTime: String!, currentRole: String): ReportExcelFile! + + """ + Статистика. Успеваемость учеников расширенная по аттестационным периодам. Выгрузка в Excel. + """ + downloadStudentsAcademicPerformanceByAttestationPeriodExpandedExcel(startDate: DateTime!, endDate: DateTime!, closeModuleDate: Date!, stageId: Int!, subjectId: Int, reportDateTime: String!, currentRole: String): ReportExcelFile! @deprecated(reason: "Под удаление. EDU-48885") + + """""" + getStudentsMarksResultDetailed(studyPeriodId: Int!, stageId: Int!, stageGroupId: Int!, subjectId: Int!): StudentFinalMarkModel! @deprecated(reason: "Под удаление. EDU-48885") + + """""" + getStudentsMarksSubjectsDetailed(studyPeriodId: Int!, stageId: Int!, studentId: UUID!): StudentFinalMarkSubjectsModel! + + """Отчет "Итоговые оценки. Детальный" с датами""" + getStudentsMarksResultDetailedByDates(periodStartDate: Date!, periodEndDate: Date!, stageId: Int!, stageGroupId: Int!, subjectId: Int!, academicYearId: ID, currentRole: String): StudentFinalMarkModel! + + """Отчет "Итоговые оценки. Детальный" с датами Выгрузка в Excel""" + downloadStudentsMarksResultDetailedExcel(periodStartDate: Date!, periodEndDate: Date!, stageId: Int!, stageGroupId: Int!, subjectId: Int!, reportDateTime: String!, academicYearId: ID, currentRole: String): ReportExcelFile! + + """ + Отчет "Итоговые оценки. Детальный" по ученику и всем предметам с датами + """ + getStudentsMarksSubjectsDetailedByDates(periodStartDate: Date!, periodEndDate: Date!, stageId: Int!, studentId: UUID!, currentRole: String): StudentFinalMarkSubjectsModel! + + """Учителя. Выгрузка в Excel.""" + getTeacherSchoolMetricsExcelForBTC(teacherSchoolMetricsInput: SchoolMonitoringInput!, showNullable: Boolean!, showNonNullable: Boolean!, reportDateTime: String!, students: String, trajectories: [String!]): ReportExcelFile! + + """ + Отчет "Успеваемость по эл.журналу" + """ + getStudentJournalPerformance(stageId: Int!, studyPeriodId: Int!): [StudentJournalPerformance!]! + + """Отчет "Успеваемость по эл.журналу" выгрузка в Excel""" + downloadStudentJournalPerformanceExcel(studentJournalPerformanceExcelInput: StudentJournalPerformanceExcelInput!): ReportExcelFile! + + """Отчет "Успеваемость" по Аттестационным периодам""" + getStudentAcademicPerformanceByAttestationPeriod(startDate: DateTime!, endDate: DateTime!, closeModuleDate: Date!, stageId: Int!, subjectId: Int, currentRole: String): [StudentAcademicPerformance!]! + + """Отчет "Успеваемость" по Аттестационным периодам расширенный""" + getStudentAcademicPerformanceByAttestationPeriodExpanded(startDate: DateTime!, endDate: DateTime!, closeModuleDate: Date!, stageId: Int!, subjectId: Int, currentRole: String): [StudentAcademicPerformanceExpandedV2!]! +} + +"""deprecated. use BusinessAdminRoleV2""" +type BusinessAdminRole { + """""" + id: ID! + + """""" + schoolId: ID! + + """""" + school: SafeSchool! + + """""" + status: RoleStatus! + + """дата активации роли""" + dateStart: DateTime + + """дата деактивации роли""" + dateEnd: DateTime + + """является ли роль дефолтной при входе пользователя в приложение""" + isDefault: Boolean! + + """название роли""" + role: ROLES! +} + +"""""" +input BusinessAdminRoleInput { + """""" + id: ID + + """""" + schoolId: ID + + """""" + status: RoleStatus + + """""" + temporaryRoleInput: TemporaryRoleInput + + """""" + productId: ID +} + +"""""" +type BusinessAdminRoleV2 { + """""" + id: ID! + + """""" + schoolId: ID + + """""" + school: SafeSchool + + """""" + status: RoleStatus! + + """дата активации роли""" + dateStart: DateTime + + """дата деактивации роли""" + dateEnd: DateTime + + """является ли роль дефолтной при входе пользователя в приложение""" + isDefault: Boolean! + + """название роли""" + role: ROLES! + + """""" + productId: ID + + """""" + orgUnitId: ID! +} + +"""""" +type BusinessAdminView { + """идентификатор пользователя""" + id: ID! + + """""" + fullName: String! + + """адрес аватара пользователя""" + avatarUrl: String + + """""" + isSchoolDirector: Boolean! +} + +"""""" +enum BusinessTypeEnum { + """""" + BASE_IDEA + + """""" + PROBLEMATIC_ISSUE + + """""" + MOTIVATION_TASK +} + +"""""" +type BusinessWidgetInfo { + """Бизнесс тип (используется только если ContentWidgetTypeEnum=Business)""" + businessType: BusinessTypeEnum! + + """ + Нетипизированная информация для бизнесс-виджета (используется только если ContentWidgetTypeEnum=Business) + """ + businessInfo: String! +} + +"""""" +type Calendar { + """""" + id: ID! + + """""" + subjects: [CalendarSubject]! +} + +"""Записи на проверку для календаря s21""" +type CalendarBooking { + """Идентификатор записи на проверку""" + id: ID! + + """Идентификатор таймслота""" + eventSlotId: ID! + + """Идентификатор ответа""" + answerId: ID + + """Таймслот, к которому привязана запись на проверку""" + eventSlot: CalendarTimeSlot! + + """Идентификатор задания на проверку""" + taskId: ID + + """Задание на проверку""" + task: Task + + """Проверяющий пользователь""" + verifierUser: User + + """Проверяемый студент""" + verifiableStudent: Student @deprecated(reason: "Use verifiableInfo.verifiableStudents") + + """Информация о проверяемых, null если не наступило время деанонимизации""" + verifiableInfo: VerifiableInfo + + """Статус записи на проверку""" + bookingStatus: BookingStatusEnum! + + """ + Команда, в которой состоит ученик, если на проверку записан групповой проект, иначе null + """ + team: ProjectTeamMembers @deprecated(reason: "Use verifiableInfo.team") + + """Онлайн проверка с Jazz""" + isOnline: Boolean! + + """Ссылка на ВКС""" + vcLinkUrl: String + + """Дополнительная информация про чек-лист""" + additionalChecklist: AdditionalChecklist +} + +"""События для календаря s21""" +type CalendarEvent { + """Идентификатор события""" + id: ID! + + """Дата и время начала события""" + start: DateTime! + + """Дата и время завершения события""" + end: DateTime! + + """Разбивка по интервалам""" + eventSlots: [CalendarTimeSlot!]! + + """Список брони на данное событие""" + bookings: [CalendarBooking!]! + + """Максмиально допустимое количество регистраций на мероприятие""" + maxStudentCount: Int @deprecated(reason: " Use activity.maxStudentCount or exam.maxStudentCount") + + """Место проведения""" + location: String @deprecated(reason: " Use activity.location or exam.location") + + """Для отображения диапазона Ip в стлучае экзамена""" + ipRange: String @deprecated(reason: " Use exam.ipRange") + + """Тип мероприятия для отображения""" + eventType: String + + """Роль пользователя (студент / сотрудник)""" + eventUserRole: CalendarEventUserRole! + + """Код типа мероприятия""" + eventCode: String + + """Описание мероприятия""" + description: String! + + """Внешний идентификатор для экзаменов/мероприятий - зависит от eventType""" + externalId: Int + + """Количество зарегестрированных""" + currentStudentsCount: Int @deprecated(reason: " Use activity.currentStudentsCount or exam.currentStudentsCount") + + """Связанный экзамен""" + exam: Exam + + """Связанная проверка код-ревью. {null} - если нет связанной проверки""" + studentCodeReview: StudentCodeReview + + """Связанное мероприятие""" + activity: ActivityEvent + + """Связанный штраф""" + penalty: Penalty + + """Средняя оценка мероприятия по отзывам""" + averageFeedbackRating: Float + + """Количество оставленых отзывов""" + feedbackCount: Int + + """Список модулей для проверки в данный слот""" + goals: [Goal!]! @deprecated(reason: "Use CalendarTimeSlot.goalCheck") + + """Информация по проверкам проекта""" + goalsReviewInfo: [GoalReviewInfo!]! @deprecated(reason: "Not relevant. Moved to 'Goal' type") + + """ + Информация о школе, к которой привязано событие + null, если событие, было созданы ДО реализации привязки эвента к школе + """ + school: CalendarEventSchool +} + +"""Информация по категории для календаря""" +type CalendarEventCategory { + """""" + id: Int + + """Название категории""" + name: String! + + """Название цвета""" + color: String! +} + +"""Для фильтрации календарных событий""" +input CalendarEventFilterInput { + """Идентификатор пользователя, являющегося участником""" + participantUserId: UUID + + """Идентификаторы пользовательских групп участников события""" + participantGroupIds: [UUID!] + + """Тип календарного события""" + eventTypeId: Int + + """Тип пользовательской группы участников события""" + groupTypeId: Int + + """Ключевая фраза""" + keyPhrase: String + + """Идентификатор пользователя (userId), создавшего событие""" + creatorId: UUID + + """Идентификатор пользовательной группы организатора события""" + organizerGroupId: UUID + + """Дата и время начала события""" + startTimePeriod: DateTime + + """Дата и время окончания события""" + endTimePeriod: DateTime + + """Признак активности события""" + active: Boolean + + """Признак события на весь день""" + allDayEvent: Boolean + + """Правило для повторяющегося события""" + recurrenceRule: String + + """До какого числа действует правило для повторяющегося события""" + recurrenceEndTs: DateTime + + """ + Идентификатор основного повторяющегося события (CalendarEvent#id) + для события-исключения из правила + """ + parentCalendarEventId: UUID +} + +"""Событие в календаре, с возможностью сохранения правила повторения""" +input CalendarEventInput { + """Идентификатор события""" + id: UUID + + """Тип события (например: 5 - Мои события)""" + eventTypeId: Int! + + """ + Идентификатор типа пользовательской группы, + которые могут быть участниками события (например: 2 - индивидуальная группа пользователей) + """ + participantGroupTypeId: Int + + """Наименование события""" + name: String! + + """Описание события""" + description: String + + """Место проведения/ссылка на онлайн событие""" + location: String! + + """Дата и время начала события""" + startTime: DateTime! + + """Дата и время окончания события""" + endTime: DateTime! + + """Признак активности события""" + active: Boolean! + + """Признак события на весь день""" + allDayEvent: Boolean! + + """Правило для повторяющегося события""" + recurrenceRule: String + + """До какого числа действует правило для повторяющегося события""" + recurrenceEndTs: DateTime + + """ + Идентификатор основного повторяющегося события (CalendarEventInput#id) + для события-исключения из правила + """ + parentCalendarEventId: UUID + + """Категория события""" + calendarEventCategoryId: Int +} + +"""""" +type CalendarEventMutations { + """Создание события в календаре и участников события""" + createCalendarEventWithParticipants( + """Событие для сохранения""" + event: CalendarEventInput! + + """Участники события""" + participants: [CalendarEventParticipantInput!]! + ): OnlineCalendarEvent! + + """Обновление события в календаре, добавление/удаление участников события""" + updateCalendarEvent( + """Событие для редактирования""" + event: CalendarEventInput! + + """Участники для добавления в событие""" + participantsToAdd: [CalendarEventParticipantInput!] + + """ + Участники для удаления из события (по идентификатору пользовательской группы) + """ + participantsToDeleteByGroupId: [UUID!] + ): OnlineCalendarEvent! + + """Отклонить событие в календаре участником""" + rejectEvent(eventId: UUID!, participantGroupIds: [UUID!]!): Boolean! + + """Удаление события в календаре, удаление участников события""" + deleteEvent(eventId: UUID!): Boolean! + + """Создание события в календаре для администрации школы""" + createCalendarEventForSchoolAdministration( + """Событие для сохранения""" + event: CalendarEventInput! + ): OnlineCalendarEvent! + + """Обновление события в календаре для администрации школы""" + updateCalendarEventForSchoolAdministration( + """Событие для редактирования""" + event: CalendarEventInput! + ): OnlineCalendarEvent! + + """Удаление события в календаре для администрации школы""" + deleteEventForSchoolAdministration(eventId: UUID!): Boolean! + + """Создать задачу в календаре""" + createCalendarTask(calendarTask: CalendarTaskInput!): CalendarTask! + + """Обновить задачу в календаре""" + updateCalendarTask(calendarTask: CalendarTaskInput!): CalendarTask! + + """Удалить задачу из календаря""" + deleteCalendarTask(calendarTaskId: UUID!): Boolean! +} + +"""Участник календарного события""" +type CalendarEventParticipant { + """Идентификатор участника события""" + id: UUID! + + """Идентификатор календарного события""" + eventId: UUID! + + """Краткая информация по пользовательской группе участника""" + userGroup: Group! + + """Время регистрации на событие""" + registerTs: DateTime! + + """Время отклонения события""" + rejectTs: DateTime + + """Статус участника события - организатор/участник""" + participantStatus: ParticipantStatus! +} + +"""Информация для создания участника события в календаре""" +input CalendarEventParticipantInput { + """Идентификатор пользовательной группы (сервис групп) участника события""" + userGroupId: UUID! + + """Статус участника события - организатор/участник""" + participantStatus: ParticipantStatus! +} + +"""""" +type CalendarEventQueries { + """Получить все события пользователя""" + getAllUserEvents( + """Идентфикатор пользовательской группы участника события""" + userGroupId: UUID! + + """Дата начала отбора событий пользователя""" + eventsRangeStartDateTime: DateTime! + + """Дата окончания отбора событий пользователя""" + eventsRangeEndDateTime: DateTime! + + """Категории событий""" + calendarEventCategoryIds: [Int!] + + """ + идентификатор пользователя ученика, если вызвано родителем для просмотра календаря ученика + """ + childUserId: ID + ): [OnlineCalendarEvent!]! + + """Получить информацию по событию""" + getEventWithParticipants(eventId: UUID!): OnlineCalendarEvent! + + """Получить идентификатор пользовательской группы участника события""" + getParticipantGroupIds(userIds: [UUID!]!, userGroupTypeId: Int!): [UUID!]! + + """Получить все события пользователя для администрации школы""" + getAllUserEventsForSchoolAdministration( + """Дата начала отбора событий пользователя""" + eventsRangeStartDateTime: DateTime! + + """Дата окончания отбора событий пользователя""" + eventsRangeEndDateTime: DateTime! + ): [OnlineCalendarEvent!]! + + """""" + getCalendarEventCategories( + """ + идентификатор пользователя ученика, если вызвано родителем для просмотра календаря ученика + """ + childUserId: ID + ): [CalendarEventCategory!]! + + """""" + getCalendarEventCategoriesByFrole( + """идентификатор функциональной роли пользователя""" + userFroleName: String! + ): [CalendarEventCategory!]! + + """Получить список задач в календаре""" + getCalendarTasks(childUserId: UUID): [CalendarTask!]! +} + +"""""" +type CalendarEventS21Queries { + """S21. Запрос событий студента для выбранного диапазона""" + getMyCalendarEvents( + """Фильтр по дате, с""" + from: DateTime! + + """Фильтр по дате, до""" + to: DateTime! + + """Параметры пагинации""" + page: PagingInput + ): [CalendarEvent!]! + + """S21. Запрос событий для агенды студента""" + getMyAgendaEvents( + """Фильтр по дате, с""" + from: DateTime! + + """Фильтр по дате, до""" + to: DateTime! + + """Лимит""" + limit: Int! + ): [AgendaEvent!]! + + """S21. Запрос предстоящих событий студента, доступных для регистрации""" + getUpcomingEventsForRegistration( + """Типы событий""" + eventCodes: [String!]! + + """Фильтр предстоящих мероприятий по доступности регистрации""" + registrationAccessStatusFilter: RegistartionStatusEnum + + """Параметры пагинации""" + page: PagingInput + ): [CalendarEvent]! +} + +"""Информация о школе, к которой привязано событие""" +type CalendarEventSchool { + """Идентификатор события""" + eventId: ID! + + """Идентификатор школы""" + schoolId: ID! + + """Полное наименование школы""" + fullName: String! + + """Короткое наименование школы""" + shortName: String! +} + +"""Тип календарного события (Мои события, урок, вебинар...)""" +type CalendarEventType { + """Идентификатор типа календарного события""" + id: Int! + + """Описание типа календарного события (например - Мои события)""" + description: String! + + """Можно ли отклонять тип события""" + rejectable: Boolean! + + """Доп. информация""" + metaData: String +} + +"""Роль пользователя в календаре""" +enum CalendarEventUserRole { + """Студент""" + STUDENT + + """Сотрудник""" + STAFF +} + +"""Обезличенные таймслоты для календаря s21""" +type CalendarNamelessTimeSlot { + """Дата и время начала слота""" + start: DateTime! + + """Дата и время завершения слота""" + end: DateTime! + + """Возможные даты начала""" + validStartTimes: [DateTime!]! + + """Признак того что слот создан сотрудником""" + staffSlot: Boolean +} + +"""Ответ на запрос обезличенных таймслотов для календаря s21""" +type CalendarNamelessTimeSlotResponse { + """Длительность проверки""" + checkDuration: Int! + + """Количество проверок для сдачи проекта""" + reviewUsersCount: Int! @deprecated(reason: "Use projectReviewsInfo") + + """Количество запланированных проверок""" + relevantReviewUsersCount: Int! @deprecated(reason: "Use projectReviewsInfo") + + """Информация о проверках проекта""" + projectReviewsInfo: ProjectReviewsInfo! + + """Обезличенные таймслоты""" + timeSlots: [CalendarNamelessTimeSlot!]! + + """Запланированные проверки""" + bookings: [CalendarBooking!]! +} + +"""""" +type CalendarSubject { + """""" + id: ID! + + """""" + title: String! + + """""" + goals: [PersonalGoal!]! + + """""" + events: [Event!]! + + """""" + personalControlWorks: [PersonalControlWork!]! +} + +"""Задача в календаре""" +type CalendarTask { + """Идентификатор задачи""" + calendarTaskId: UUID! + + """Идентификатор пользователя""" + userId: UUID! + + """Идентификатор школы""" + schoolId: UUID! + + """Роль пользователя""" + userRole: String! + + """Наименование задачи""" + name: String! + + """Срок завершения задачи""" + date: Date! + + """Время создания""" + createTs: DateTime! + + """Время обновления""" + updateTs: DateTime + + """Выполнено/не выполнено""" + isDone: Boolean! +} + +"""""" +input CalendarTaskInput { + """Идентификатор задачи""" + calendarTaskId: UUID + + """Идентификатор пользователя""" + userId: UUID + + """Идентификатор школы""" + schoolId: UUID + + """Роль пользователя""" + userRole: String + + """Наименование задачи""" + name: String! + + """Срок завершения задачи""" + date: Date! + + """Время создания""" + createTs: DateTime + + """Время обновления""" + updateTs: DateTime + + """Выполнено/не выполнено""" + isDone: Boolean! +} + +""" + Календарно-тематическое планирование +Календарно-тематический план +""" +type CalendarThematicPlan { + """Идентификатор плана""" + calendarThematicPlanId: ID! + + """Наименование плана""" + name: String! + + """Идентификатор группы по предмету""" + stageSubjectGroupId: ID! + + """Идентификатор общеобразовательного учреждения""" + orgUnitId: UUID! + + """Количество часов на план""" + plannedHours: Int + + """Темы в тематическом плане""" + topics: [CalendarThematicPlanTopic] + + """Дата создания плана""" + createdTs: DateTime! + + """Автор плана""" + createdUser: PlanningUserInfo! + + """Дата обновления плана""" + updatedTs: DateTime + + """Редактор плана""" + updatedUser: PlanningUserInfo +} + +"""Фильтр для выборки тематических планов""" +input CalendarThematicPlanFilter { + """список параллелей""" + stageIds: [ID!]! + + """список предметов""" + subjectIds: [ID!]! + + """список учебных лет""" + academicYearId: ID + + """список ГКпП""" + stageSubjectGroupIds: [ID!]! +} + +"""""" +input CalendarThematicPlanInput { + """Идентификатор плана""" + calendarThematicPlanId: ID! + + """Наименование плана""" + name: String! + + """Идентификатор группы по предмету""" + stageSubjectGroupId: ID! + + """Идентификатор общеобразовательного учреждения""" + orgUnitId: UUID! + + """Количество часов на план""" + plannedHours: Int + + """Темы в тематическом плане""" + topics: [CalendarThematicPlanTopicInput] +} + +"""""" +type CalendarThematicPlanLessonStatus { + """Существует ли КТП для ГКпГ""" + isCalendarThematicPlanExists: Boolean! + + """Id календарно-тематического плана к которому принадлежит урок""" + calendarThematicPlanId: ID + + """Существует ли урок с требуемым временем начала в КТП""" + isCalendarThematicPlanLessonExists: Boolean! + + """Наименование урока""" + lessonName: String +} + +"""Тема календарно-тематического плана""" +type CalendarThematicPlanTopic { + """Идентификатор темы""" + calendarThematicPlanTopicId: ID! + + """Наименование темы""" + topicName: String! + + """Номер темы""" + topicNumber: Int! + + """Количество часов на тему""" + topicHours: Int! + + """Дата и время начала темы""" + startTopicDate: Date + + """Дата и время окончания темы""" + endTopicDate: Date + + """Дата и время начала темы из расписания""" + startTimetableDate: Date + + """Дата и время окончания темы из расписания""" + endTimetableDate: Date + + """Уроки по теме""" + lessons: [CalendarThematicPlanTopicLesson!]! +} + +"""Тема календарно-тематического плана""" +input CalendarThematicPlanTopicInput { + """Идентификатор темы""" + calendarThematicPlanTopicId: ID! + + """Наименование темы""" + topicName: String! + + """Номер темы""" + topicNumber: Int! + + """Количество часов на тему""" + topicHours: Int! + + """Уроки по теме""" + lessons: [CalendarThematicPlanTopicLessonInput] +} + +"""Уроки темы календарно-тематического плана""" +type CalendarThematicPlanTopicLesson { + """Идентификатор урока в теме""" + calendarThematicPlanTopicLessonId: ID! + + """Наименование урока""" + lessonName: String! + + """Номер урока""" + lessonNumber: Int! + + """Плановая дата проведения урока""" + lessonDateTime: DateTime + + """Плановая дата проведения урока из расписания""" + timetableDateTime: DateTime + + """Признак наличия контрольной работы""" + controlWork: Boolean! +} + +"""Уроки темы календарно-тематического плана""" +input CalendarThematicPlanTopicLessonInput { + """Идентификатор урока в теме""" + calendarThematicPlanTopicLessonId: ID! + + """Наименование урока""" + lessonName: String! + + """Номер урока""" + lessonNumber: Int! + + """Признак наличия контрольной работы""" + controlWork: Boolean! +} + +"""Таймслоты для календаря s21""" +type CalendarTimeSlot { + """Идентификатор таймслота""" + id: ID! + + """Идентификатор события""" + eventId: ID! + + """Тип слота""" + type: TimeSlotTypeEnum! + + """Дата и время начала слота""" + start: DateTime! + + """Дата и время завершения слота""" + end: DateTime! + + """ + Флаг видимости для мультикампустности для БА + {null}, если таймслот принадлежит студенту + """ + isMultiVisible: Boolean + + """бронь на данный слот""" + booking: CalendarBooking + + """Событие в календаре, к которому привязан слот""" + event: CalendarEvent! + + """Модуль для проверки в данный таймслот""" + goalCheck: GoalCheck + + """ + Школа, в которой создан слот + null, если не наступило время деанонимизации + """ + school: School +} + +"""""" +type CatalogErrorDescription { + """""" + itemId: UUID! + + """""" + error: String! +} + +"""""" +type CatalogFixResult { + """""" + processed: [UUID!]! + + """""" + skipped: [UUID!]! @deprecated + + """""" + errors: [CatalogErrorDescription!]! + + """""" + totalProcessed: Int! + + """""" + totalSkipped: Int! + + """""" + totalErrors: Int! +} + +"""Информация о запрошенной странице материалов медиатеки""" +type CategoryItemPage { + """Сами материалы""" + categoryItems: [ContentItem!]! + + """Общее количество материалов в категории, соответствующих фильтру""" + totalCategoryItems: Int! + + """Запрошенная страница""" + pageNumber: Int! + + """Размер запрошенной страницы""" + pageSize: Int! +} + +"""""" +type ChallengeSubjectCategory { + """идентификатор категории предмета""" + subjectCategoryId: ID! + + """название предмета""" + name: String! + + """Короткое название предмета""" + shortName: String! +} + +"""""" +type ChallengeSubjectV2 { + """идентификатор предмета""" + subjectId: ID! + + """название предмета""" + name: String! +} + +"""Изменение баллов участников коалиции в рамках турнира""" +input ChangeCoalitionMemberPointsInput { + """ID участника коалиции""" + coalitionMemberId: ID! + + """Сколько баллов добавить/убрать""" + delta: Int! + + """Причина добавления/вычитания баллов""" + reasonDescription: String! +} + +"""Результаты начисления очков коалиции по логинам или по фильтру""" +type ChangeCoalitionMemberPointsResponse { + """""" + notFound: [String]! + + """""" + notInCoalition: [String]! + + """""" + notInActiveTournament: [String]! + + """""" + success: [String]! +} + +"""Изменение баллов коалиции в рамках турнира""" +input ChangeCoalitionPointsInput { + """ID связки коалиции и турнира""" + coalitionTournamentId: ID! + + """Сколько баллов добавить/убрать""" + delta: Int! + + """Причина добавления/вычитания баллов""" + reasonDescription: String! +} + +"""""" +type ChangeContentProductionStatusResponse { + """""" + log: ContentProductionStatusChangeLog +} + +"""""" +type ChangeLessonLearningActivityResult { + """""" + isSuccess: Boolean! + + """""" + changedFinalMarks: [JournalFinalStudentMark!]! +} + +"""""" +input ChangeScopeAndStatusForContentEntitiesRequest { + """ + Тип сущности, по которой мы изменяем скоуп или статус производства контента + """ + contentEntityType: ContentEntityType! + + """Идентификаторы сущностей""" + entityIds: [ID!]! + + """ + Область видимости дла перевода, в случае если передан null, то переводить не нужно + """ + scope: ScopeEnum + + """Статус для перевода, в случае если""" + productionStatus: ContentEntityProductionStatus +} + +"""""" +input ChangeStudentModuleGoalLevelForAchieveRequest { + """идентификатор Учебного Модуля (goals.goal_id)""" + moduleId: ID! + + """идентификатор студента (tudents.student_id)""" + studentId: UUID! + + """новая трудоемкость""" + goalLevelForAchieve: Float! + + """ + флаг - проверять аффектит ли учебный процесс студента выполняемое изменение + """ + isNeedToCheckAffecting: Boolean! +} + +"""""" +type ChangeStudentModuleGoalLevelForAchieveResponse { + """Персонализированный Учебный Модуль""" + module: StudentModule! + + """успешно ли выполнение запроса (пройдены ли все проверки)""" + isSuccess: Boolean! +} + +"""""" +input ChangeStudentModuleLaboriousnessAndDatesRequest { + """идентификатор Учебного Модуля (goals.goal_id)""" + moduleId: ID! + + """идентификатор студента (tudents.student_id)""" + studentId: UUID! + + """новая трудоемкость""" + laboriousness: Int! + + """новая запланированная дата начала Учебного Модуля""" + startDate: Date! + + """новая запланированная дата окончания Учебного Модуля""" + endDate: Date! + + """ + флаг - проверять аффектит ли учебный процесс студента выполняемое изменение + """ + isNeedToCheckAffecting: Boolean! +} + +"""""" +type ChangeStudentModuleLaboriousnessAndDatesResponse { + """Персонализированный Учебный Модуль""" + module: StudentModule! + + """успешно ли выполнение запроса (пройдены ли все проверки)""" + isSuccess: Boolean! +} + +"""""" +input ChangeStudentTaskStatusInput { + """Ид задания студента которому меняем статус""" + studentTaskId: ID! + + """Опциональная оценка задания""" + governmentMarkId: Int + + """Статус, в который необходимо перевести задание""" + taskStatus: TaskStatusEnum! + + """Критерии оценивания""" + criteriaEvaluations: [EvaluatedTaskCriterionInput!]! +} + +"""""" +input ChangeStudentTaskStatusesRequest { + """Список запросов по обновлению статуса Заданий Учеников от Учителя""" + changeStudentTaskStatusInputModels: [ChangeStudentTaskStatusInput!]! + + """ + Параметры сортировки по полям StudentTasKWidgetAnswerModel + (student_task_widget_answers.modify_time/create_time) + """ + sortingFields: [SortingField!]! +} + +""" +Информация по обновлённым/проверенным Учителем Заданиям в контексте Студента +""" +type ChangeStudentTaskStatusesResponse { + """""" + studentTasksInfos: [StudentTaskInfo!]! +} + +"""""" +input ChangeTaskSetSlotRequest { + """ + идентификатор слота набора заданий (base_playlist_slots.base_playlist_slot_id или teacher_playlist_slots.teacher_playlist_slot_id) + """ + slotId: ID! + + """ + идентификатор набора заданий (base_playlists.base_playlist_id или teacher_playlists.teacher_playlist_id) + """ + taskSetId: ID! + + """тип плейлиста""" + taskSetType: PlaylistType! + + """новая структура слота""" + newSlot: TaskSetSlotInput! + + """ + необязательный идентификатор студента для того, чтобы в ответ получить персональную информацию по заданиям, добавленным в слот + """ + studentIdForContext: UUID + + """ + флаг - проверять аффектит ли учебный процесс студента выполняемое изменение + """ + isNeedToCheckAffecting: Boolean! +} + +"""""" +type ChangeTaskSetSlotResponse { + """измененный слот""" + changedSlot: TaskSetSlot! + + """ + задания в контексте студента для случая, когда плейлист изменяется в контексте студента + """ + studentTasks: [StudentTask!]! + + """измененный набор заданий""" + taskSet: TaskSet! + + """успешно ли выполнение запроса (пройдены ли все проверки)""" + isSuccess: Boolean! +} + +"""""" +input ChangeTaskSetSlotsRequest { + """ + идентификатор набора заданий (base_playlists.base_playlist_id или teacher_playlists.teacher_playlist_id) + """ + taskSetId: ID! + + """тип плейлиста""" + playlistType: PlaylistType! + + """Слоты для изменения""" + slots: [TaskSetSlotInput!]! + + """ + флаг - проверять аффектит ли учебный процесс студента выполняемое изменение + """ + isNeedToCheckAffecting: Boolean! + + """флаг школы 21""" + isSchool21: Boolean +} + +"""""" +type ChangeTaskSetSlotsResponse { + """измененный набор заданий""" + taskSet: TaskSet! + + """успешно ли выполнение запроса (пройдены ли все проверки)""" + isSuccess: Boolean! +} + +"""""" +type Channel { + """""" + channelId: ID! + + """""" + channelName: String! + + """""" + channelActive: Boolean! +} + +"""""" +input ChannelInput { + """""" + channelId: ID! + + """""" + channelName: String + + """""" + channelActive: Boolean! +} + +"""""" +type CheckSequenceSettings { + """""" + taskId: ID! + + """""" + countingFormula: CountingFormulaType! + + """""" + checks: [CheckWeight!]! +} + +"""""" +input CheckSequenceSettingsInput { + """""" + taskId: ID! + + """""" + countingFormula: CountingFormulaType! + + """""" + checks: [CheckWeightInput!]! +} + +"""""" +type CheckWeight { + """""" + checkType: TaskCheckEnum! + + """""" + percentage: Int + + """""" + order: Int +} + +"""""" +input CheckWeightInput { + """""" + checkType: TaskCheckEnum! + + """""" + percentage: Int + + """""" + order: Int +} + +"""Чек-листы для проверки задания""" +type Checklist { + """Идентификатор""" + id: ID! + + """Идентификатор задания""" + taskId: ID! + + """Название чеклиста""" + name: String + + """Описание чек-листа""" + comment: String + + """Вступление чек-листа""" + introduction: String + + """Инструкция чек-листа""" + guidelines: String! + + """Язык""" + language: String! + + """Дата создания""" + createTime: DateTime! + + """Секции чек-листа""" + sectionList: [ChecklistSection!]! + + """Набор допустимых быстрых действий""" + quickActions: [QuickAction!]! +} + +"""Заполненный чек-лист""" +input ChecklistFilledInput { + """Идентификатор заполненного чек-листа""" + filledChecklistId: ID! + + """Оценки вопросов чек-листа""" + scoreQuestions: [ScoreQuestionInput!] + + """Флаг быстрого действия""" + quickAction: QuickAction + + """Комментарий""" + comment: String! + + """Идентификатор видео онлайн проверки""" + vcRecordingId: ID +} + +"""Секция чек-листа""" +type ChecklistSection { + """Идентификатор секции""" + checklistSectionId: ID! + + """Идентификатор чек-листа""" + checklistId: ID! + + """Название секции""" + name: String! + + """Описание секции""" + description: String + + """Вид категории""" + kindQuestionId: ID! + + """Вопросы секции""" + questionList: [SectionQuestion] +} + +"""""" +type ChildUserInfo { + """""" + id: ID! + + """""" + avatarUrl: String! + + """""" + firstName: String! + + """""" + middleName: String + + """""" + lastName: String! + + """""" + studentRoles: [StudentRole!]! +} + +"""Информация о классе взята из stage_subject_groups""" +type ClassInStage { + """id группы класса по предмету (stage_subject_groups_id)""" + stageSubjectGroupId: ID! + + """имя класса""" + name: String! +} + +"""План на Класс по Предмету (план привязанный к stageSubjectGroup)""" +type ClassPlan { + """Идентификатор (stage_subject_group_plans.stage_subject_group_plan_id)""" + id: ID! + + """статус Плана""" + status: PlanStatusEnum! + + """ + Флаг, означающий что План на Класс по Предмету отличается от соответствующего Плана на Параллель + """ + isChanged: Boolean! + + """ + Флаг, означающий что СЗ в Плане на Класс по Предмету отличаются от дефолтных (для V4) + """ + isPlaylistsChanged: Boolean! + + """ + список Учебных Модулей в Плане с привязкой к датам и необходимому для достижения уровню + """ + frames: [ClassPlanFrame!]! + + """Дата создания плана""" + createTime: DateTime! + + """Дата изменения плана""" + modifyTime: DateTime! + + """Количество модулей""" + modulesCount: Int + + """Общая трудоемкость""" + laboriousness: Int + + """Последний день последнего модуля""" + endDate: Date +} + +"""""" +type ClassPlanChangeResponse { + """""" + plan: ClassPlan + + """""" + isSuccess: Boolean! +} + +"""Учебный модуль внутри Плана на Класс по Предмету""" +type ClassPlanFrame { + """ + Идентификатор (stage_subject_group_plan_goals.stage_subject_group_plan_goal_id) + """ + id: ID! + + """Запланированная дата начала изучения Учебного модуля""" + startDate: DateTime! + + """Запланированная дата достижения Учебного Модуля""" + endDate: DateTime! + + """ + Является ли дедлайл жестким. После истечения жесткого дедлайна нельзять отправлять задания модуля на проверку + """ + isHardEndDate: Boolean! + + """Уровень, на котором Учебный Модуль объявляется достигнутым учеником""" + achieveLevel: Float! + + """Примерная трудоемкость Учебного Модуля в часах в рамках текущего Плана""" + laboriousness: Int! + + """Учебный Модуль(GoalDTO)""" + module: StudyModule! + + """Идентификатор Учебного Модуля (goals.goal_id)""" + moduleId: ID! + + """ + Идентификатор Учительского Плейлиста, + назначенного по Учебному Модулю в рамках классового Плана (teacher_playlists.teacher_playlist_id) + """ + teacherPlaylistId: ID + + """ + Идентификатор Базового Плейлиста, + назначенного по Учебному Модулю в рамках классового Плана (base_playlists.base_playlist_id) + """ + basePlaylistId: ID + + """ + Плейлист назначенный по Учебному Модулю в рамках классового Плана (teacher_playlists.teacher_playlist_id или base_playlists.base_playlist_id) + """ + playlist: TaskSet! + + """ + Флаг обязательности Учебного Модуля в рамках конкретного Плана на Группу по Предмету + """ + mandatory: Boolean! + + """Условия прохождения учебного модуля в плане""" + conditions: [PlanFrameCondition!]! +} + +"""""" +input ClassPlanFrameInput { + """Запланированная дата начала изучения Учебного модуля""" + startDate: String! + + """Запланированная дата достижения Учебного Модуля""" + endDate: String! + + """ + Является ли дедлайл жестким. После истечения жесткого дедлайна нельзять отправлять задания модуля на проверку + """ + isHardEndDate: Boolean! + + """Уровень, на котором Учебный Модуль объявляется достигнутым учеником""" + achieveLevel: Float! + + """Примерная трудоемкость Учебного Модуля в часах в рамках текущего Плана""" + laboriousness: Int! + + """Учебный Модуль""" + moduleId: ID! + + """ + Флаг обязательности Учебного Модуля в рамках конкретного Плана на Группу по Предмету + """ + mandatory: Boolean! + + """Условия прохождения Учебного Модуля""" + conditions: [PlanFrameConditionInput!]! + + """Идентификатор Базового Плейлиста (base_playlists.base_playist_id)""" + basePlaylistId: ID + + """ + Идентификатор Учительского Плейлиста (teacher_playlists.teacher_playlist_id) + """ + teacherPlaylistId: ID +} + +"""Модули версии плана на класс""" +type ClassPlanFrameVersion { + """Идентификатор""" + id: ID! + + """Запланированная дата начала изучения Учебного модуля""" + startDate: DateTime! + + """Запланированная дата достижения Учебного Модуля""" + endDate: DateTime! + + """ + Является ли дедлайл жестким. После истечения жесткого дедлайна нельзять отправлять задания модуля на проверку + """ + isHardEndDate: Boolean! + + """Уровень, на котором Учебный Модуль объявляется достигнутым учеником""" + achieveLevel: Float! + + """Примерная трудоемкость Учебного Модуля в часах в рамках текущего Плана""" + laboriousness: Int! + + """Идентификатор Учебного Модуля (goals.goal_id)""" + moduleId: ID! + + """ + Идентификатор Учительского Плейлиста, + назначенного по Учебному Модулю в рамках классового Плана (teacher_playlists.teacher_playlist_id) + """ + teacherPlaylistId: ID + + """ + Идентификатор Базового Плейлиста, + назначенного по Учебному Модулю в рамках классового Плана (base_playlists.base_playlist_id) + """ + basePlaylistId: ID + + """ + Флаг обязательности Учебного Модуля в рамках конкретного Плана на Группу по Предмету + """ + mandatory: Boolean! +} + +"""Информация о плане для модуля в медиатеке для Учителя""" +type ClassPlanMediateka { + """ID плана""" + planId: Int! + + """Название класса по предмету""" + classSubjectName: String! +} + +"""Версия плана на класс""" +type ClassPlanVersion { + """""" + id: ID! + + """""" + frames: [ClassPlanFrameVersion!]! + + """""" + versionCreateTime: DateTime! + + """""" + versionCreateUser: User! +} + +"""""" +enum ClassProgressEnum { + """""" + LOW_CLASS_PROGRESS + + """""" + MIDDLE_CLASS_PROGRESS + + """""" + HIGH_CLASS_PROGRESS +} + +"""""" +type ClassRoom { + """""" + id: ID! + + """Номер комнаты (название)""" + number: String! + + """Количество мест""" + capacity: Int! + + """Количество свободных мест""" + availableCapacity: Int! + + """""" + floor: Int! + + """В кабинете можно проводить только предмет по специализации.""" + isHighlySpecialized: Boolean! + + """""" + specialization: String! @deprecated(reason: "Use classroomSpecializations field") + + """Специализации кабинета""" + specializations: [String!]! @deprecated(reason: "Use classroomSpecializations field") + + """Специализации кабинета c дополнительными признаками""" + classroomSpecializations: [ClassroomSpecialization!]! + + """""" + isActive: Boolean! + + """План кластера (комнаты)""" + classroomPlan: ClassroomPlan + + """Здание, в котором расположен кабинет (кластер)""" + building: Building! + + """""" + teacher: Teacher +} + +"""deprecated""" +input ClassRoomInput { + """""" + id: ID + + """""" + number: String! + + """""" + capacity: Int! + + """""" + floor: Int! + + """""" + specialization: String! + + """""" + isActive: Boolean! +} + +"""""" +input ClassRoomInputModel { + """""" + id: ID + + """""" + number: String! + + """""" + capacity: Int! + + """""" + floor: Int! + + """""" + specialization: [String!]! + + """ + @deprecated(reason: "use classroomSpecializations") закомментировано, потому что нельзя сделать поле необязательным, а обязательное поле нельзя депрекейтить + В кабинете можно проводить только предмет по специализации. + """ + isHighlySpecialized: Boolean + + """Специализация кабинета с дополнительными признаками""" + classroomSpecializations: [ClassroomSpecializationInputModel!] + + """""" + isActive: Boolean! + + """""" + teacherId: ID +} + +""" +Группа класса по предмету - ГКпП +Например, (5А, Биология) +""" +type ClassSubject { + """ID класса по предмету(stageSubjectGroupId)""" + id: ID! + + """Имя класса по предмету(stageSubjectGroupName: 5а, биология)""" + name: String! + + """Имя класса(stageGroupName: 5A)""" + className: String! + + """Параллель(Пятые классы)""" + stage: Stage! + + """Подгруппы учеников по предмету""" + subgroups: [Subgroup!]! + + """Идентификатор предмета на параллель""" + stageSubjectId: ID! + + """Время/Дата следующего урока по предмету""" + nextLessonDateTime: DateTime + + """кол-во задач на проверку класса по предмету""" + tasksNeedCheckCount: Int! + + """Предмет который преподается в Группе""" + subject: Subject! + + """Идентификатор класса, в котором расположена ГКпП (stageGroupId)""" + classId: ID! + + """Прогресс класса(5А) по предмету(Биология)""" + classProgress: ClassProgressEnum! + + """ + Все четверти, в которых учиться Класс По Предмету в текущем учебном году + """ + studyPeriods: [StudyPeriod!]! + + """ + План на Класс по Предмету, назначенный учителем/завучем на конкретную Класс по Предмету (stageSubjectGroup) + """ + classPlan: ClassPlan + + """последняя просмотренная версия плана""" + lastViewedClassPlanVersion: ClassPlanVersion + + """ + План на Параллель, в которую входит Класс По Предмету, назначенный на класс методистом. + """ + stagePlan: StagePlan + + """студенты группы""" + students: [Student!]! + + """количество студентов в группе""" + studentNumber: Int! + + """Идентификатор учителя""" + teacherId: ID + + """учитель""" + teacher: User + + """количество часов в неделю""" + hoursPerWeek: String + + """ + Кол-во часов в год, выделенных по предмету на класс в рамках созданной в школе учебной программы + """ + hoursInYearForSubject: Int + + """Контрольные Работы назначенные на Группу По Предмету""" + controlWorks: [ClassSubjectControlWork!]! + + """Ближайшая запланированная Контрольная Работа""" + nextPlannedControlWork: ClassSubjectControlWork + + """Академический год в рамках которого существует группа по предмету""" + academicYear: AcademicYear! + + """Конфигурация оценивания""" + ratingConfiguration: RatingConfiguration! + + """Дата начала плана на класс""" + startDate: DateTime + + """Тип обучения""" + learningType: LearningTypeEnum + + """Количество групп по предмету в рамках одного предмета""" + subjectStageSubjectGroupsQuantity: Int + + """Необходимость специального оборудования для урока""" + requiresEquipment: Boolean! + + """Признак того, что группа является единственной по предмету""" + singleSubjectGroup: Boolean + + """ + Информация о количестве учеников в группах успеваемости в текущем учебном периоде + """ + currentPeriodPerformance: CurrentPeriodPerformance + + """Информацию о текущем модуле и статистике работы учеников с ним""" + currentModulePerformance: CurrentModulePerformance + + """ + Класс, в котором расположена ГКпП (classId) + Фактически поле является non-nullable. Добавлено как nullable из-за ограничений расширения gql-схемы + """ + stageGroup: StageGroup +} + +"""""" +input ClassSubjectBaseInput { + """идентификатор класса, частью которого является группа""" + stageGroupId: ID! + + """название группы (Физкультура девочки)""" + name: String! + + """идентификатор предмета группы""" + subjectId: ID! + + """идентификатор учителя""" + teacherId: ID! + + """необходимость специального оборудования для урока, по умолчанию false""" + requiresEquipment: Boolean! + + """признак того, что группа является единственной по предмету""" + singleSubjectGroup: Boolean +} + +"""Контрольная работа на Группу по Предмету""" +type ClassSubjectControlWork { + """ + Идентификатор stage_subject_group_control_works(stage_subject_group_control_work_id) + """ + id: ID! + + """Название Контрольной""" + name: String! + + """Название Группы по Предмету, на который назначена Контрольная""" + classSubjectName: String + + """ + идентификатор Группы по Предмету (stage_subject_groups.stage_subject_group_id) + """ + classSubjectId: ID + + """Учебный Модуль, по которому проводится Контрольная""" + module: StudyModule! + + """ + Дата и Время, в которые Учитель планирует начать Контрольную Работу UTC!!!!! + """ + planTime: DateTime + + """Дата и время начала Контрольной Работы UTC!!!!!""" + startTime: DateTime + + """Дата и время конца Контрольной Работы UTC!!!!!""" + closeTime: DateTime + + """Продолжительность Контрольной""" + duration: Int! + + """Комментарий к Контрольной""" + comment: String + + """Статус Контрольной""" + status: ControlWorkStatus! + + """Дата и время создания Контрольной""" + createTime: DateTime! + + """Дата и время последней модификации Контрольной""" + modifyTime: DateTime + + """Варианты Контрольной""" + variants: [ClassSubjectControlWorkVariant!]! + + """Показывается ли содержимое Контрольной Работы ученикам""" + visible: Boolean! + + """Общее количество студентов в Группе по Предмету""" + totalNumberOfStudents: Int! + + """Количество Студентов с назначенными вариантами""" + numberOfStudentsWithVariants: Int! + + """Предмет по Контрольной""" + subject: Subject! + + """""" + permissionStatus: Boolean +} + +"""""" +type ClassSubjectControlWorkInfo { + """Группа по Предмету, в которой проходит Работа""" + classSubject: ClassSubject! + + """Контрольная Работа на ГРуппу по Предмету""" + controlWork: ClassSubjectControlWork! + + """ + Персональные Контрольные Работы, относящиеся к Контрольной Работе на Группу по Предмету + """ + personalControlWorks: [PersonalControlWork!]! +} + +"""Вариант Контрольной Работы на Группу по Предмету""" +type ClassSubjectControlWorkVariant { + """ + Идентификатор варианта (stage_subject_control_work_variants.stage_subject_group_control_work_variant_id) + """ + id: ID! + + """Номер варианта""" + number: Int! + + """Задания, входящие в вариант""" + tasks: [Task!]! +} + +"""""" +type ClassSubjectIdToPermission { + """""" + ClassSubjectId: ID! + + """""" + classSubjectPermission: ClassSubjectPermission! +} + +"""""" +input ClassSubjectInput { + """идентификатор группы. Если пусто - создастся новая группа""" + classSubjectGroupId: ID + + """идентификатор класса, частью которого является группа""" + stageGroupId: ID! + + """название группы (Физкультура девочки)""" + name: String! + + """идентификатор предмета группы""" + subjectId: ID! + + """список идентификаторов студентов группы""" + students: [ID!]! + + """список студентов на удаление""" + removedStudents: [ID!] + + """идентификатор учителя""" + teacher: ID + + """количество часов в неделю""" + hoursPerWeek: String + + """необходимость специального оборудования для урока, по умолчанию false""" + requiresEquipment: Boolean + + """признак того, что группа является единственной по предмету""" + singleSubjectGroup: Boolean +} + +""" +Тип результата невалидного процесса расчета успеваемости класса, связанный с результатами фильтров +или отсутствия данных как самих по себе, так и в результате фильтрации +""" +enum ClassSubjectPerformanceErrorEnum { + """Студенты не найдены""" + STUDENTS_NOT_FOUND + + """Траектории не найдены""" + TRAJECTORIES_NOT_FOUND + + """Задания студентов не найдены""" + STUDENT_TASKS_NOT_FOUND + + """Общий статус для отсутствующего результата""" + NOTHING_FOUND +} + +"""Уровень доступа относительно группы по предмету""" +enum ClassSubjectPermission { + """Только просмотр""" + READ_ONLY + + """Просмотр и Изменение""" + READ_AND_WRITE + + """Нет прав""" + NO_PERMISSIONS +} + +"""Постраничный список студентов по подгруппам""" +type ClassSubjectStudentsBySubgroupsPage { + """Подгруппы учеников по предмету""" + subgroups: [Subgroup!]! + + """общее количество без пагинации""" + total: Int! +} + +"""""" +enum ClassroomDeletionCode { + """""" + CAN_BE_SAFELY_DELETED + + """""" + HAS_LESSONS_IN_THE_PAST + + """""" + HAS_LESSONS_IN_THE_PAST_AND_FUTURE + + """""" + HAS_LESSONS_IN_THE_FUTURE +} + +"""План кластера (комнаты)""" +type ClassroomPlan { + """Идентификатор плана кластера""" + classroomPlanId: ID! + + """Метаданные плана кластера""" + planMeta: String! +} + +"""""" +type ClassroomSpecialization { + """ + Специализацией кабинета, может быть: + - название предмета (subjectId заполняется), + - свободный ввод пользователя (subjectId не заполняется) + """ + name: String! + + """ + Идентификатор предмета, который может проводиться в кабинете, + null если name не является предметом + """ + subjectId: ID +} + +"""""" +input ClassroomSpecializationInputModel { + """ + Специализацией кабинета, может быть: + - название предмета (subjectId заполняется), + - свободный ввод пользователя (subjectId не заполняется) + """ + name: String! + + """ + Идентификатор предмета, который может проводиться в кабинете, + null если name не является предметом + """ + subjectId: ID +} + +"""Типы значений для условия фильтрации""" +enum ClauseValueTypeEnum { + """значение можно выбрать только из выпадающего списка""" + SELECT + + """можно выбрать несколько значений из выпадающего списка""" + SELECT_MULTIPLE + + """значение можно ввести вручную""" + NUMBER + + """текстовое значение можно ввести вручную""" + TEXT +} + +"""Информация по студентам за рабочими станциями в кластере""" +type ClusterPlanStudents { + """Студенты прошедшие аутентификацию за рабочими станциями""" + occupiedPlaces: [CurrentWorkstationUser!]! + + """Количество свободных мест""" + freePlaceCount: Int! +} + +"""""" +enum ClusterState { + """""" + AVAILABLE + + """""" + DRAFT +} + +"""""" +type ClusterSummaryModel { + """Идентификатор кластера""" + clusterId: Int! + + """Название кластера""" + name: String! + + """Дата последнего редактирования""" + lastEditDate: DateTime + + """Последний редактирущий""" + lastEditLogin: String + + """Этаж""" + floor: Int! + + """Общее кол-во посадочных мест""" + totalSeatsCount: Int! + + """Состояние кластера""" + clusterState: ClusterState! +} + +"""Подложки(фоны) для коалиций""" +type CoalitionBackground { + """""" + coalitionBackgroundId: Int! + + """""" + smallImg: String! + + """""" + bigImg: String! +} + +"""Аватары для мастера трайба""" +type CoalitionMasterAvatar { + """""" + coalitionMasterAvatarId: Int! + + """""" + imgUrl: String! +} + +"""Участник коалиции""" +type CoalitionMember { + """coalitionMemberId""" + id: ID! + + """""" + user: User! + + """""" + userId: UUID! + + """""" + active: Boolean! + + """""" + coalitionId: ID! + + """""" + coalition: GameCoalition! + + """""" + currentTournamentPowerRank: CoalitionMemberPowerRank +} + +"""Сводная информация об участнике коалиции""" +type CoalitionMemberInfoModel { + """Идентификатор пользователя""" + userId: ID! + + """Логин пользователя""" + login: String! + + """Имя пользователя""" + lastName: String! + + """Фамилия пользователя""" + firstName: String! + + """Аватар пользователя""" + avatarUrl: String! + + """Идентификатор участника коалиции""" + coalitionMemberId: Int! + + """ + Сколько у пользователя очков в текущем турнире, null если текущего турнира нет + """ + points: Int + + """ + Рейтинг пользователя в своей коалиции в текущем турнире, null если текущего турнира нет + """ + rankInCoalition: Int + + """Уровень опыта пользователя""" + experienceLvl: Int! +} + +"""Баллы участника коалиции в рамках турнира""" +type CoalitionMemberPower { + """""" + id: ID! + + """ID участника""" + coalitionMemberId: ID! + + """Сущность пользователя участника""" + coalitionMemberUser: User! + + """Количество баллов""" + points: Int! + + """Коалиция в рамках турнира""" + coalitionTournament: CoalitionTournament! +} + +"""Ранг члена коалиции в рамках турнира""" +type CoalitionMemberPowerRank { + """coalitionMemberId""" + id: ID! + + """Баллы""" + power: CoalitionMemberPower! + + """Ранг участника""" + rank: Int! +} + +"""Коалиция в рамках турнира""" +type CoalitionTournament { + """coalition_tournament_id""" + id: ID! + + """""" + coalitionId: ID! + + """""" + tournamentId: ID! + + """""" + coalition: GameCoalition! + + """""" + tournament: GameTournament! + + """Баллы""" + points: Int! + + """Баллы выданные/отнятые в ручну""" + extraPoints: Int! + + """ + Участник, с наибольшим количеством баллов в этой коалиции + {null} если нет лидера + """ + mvpMember: CoalitionMemberPower +} + +"""Коалиция в рамках турнира c рангом""" +type CoalitionTournamentRank { + """coalition_tournament_id""" + id: ID! + + """""" + coalitionTournament: CoalitionTournament! + + """Ранг коалиции""" + rank: Int! +} + +"""""" +type CodeAnswerBody { + """Ответ на виджет""" + code: String! +} + +"""""" +input CodeAnswerBodyInput { + """Ответ на виджет""" + code: String! +} + +"""Студенческий модуль по код-ревью""" +type CodeReview { + """Идентификатор модуля""" + goalId: ID! + + """Идентификатор модуля студента""" + studentGoalId: ID! + + """Наименование модуля""" + goalTitle: String! + + """Статус (возвращает заглушку CodeReviewStatus.WAIT_FOR_REVIEW)""" + codeReviewStatus: CodeReviewStatus! @deprecated(reason: "Use studentCodeReviewStatus") + + """Статус""" + studentCodeReviewStatus: StudentCodeReviewStatus! + + """Тип выполнения модуля""" + goalExecutionType: ModuleExecutionType! + + """Дополнительные атрибуты задания, доступные для студента""" + studentTaskAdditionalAttributesModel: StudentTaskAdditionalAttributes! +} + +"""Информация о проверках проекта""" +type CodeReviewChecksInfo { + """Максимальное количество проверяющих (код-ревью)""" + maxCodeReviewCount: Int! + + """Длительность проверки (код-ревью, в минутах)""" + codeReviewDuration: Int! + + """Стоимость проверки (Code Review Points)""" + codeReviewCost: Int! +} + +"""Информация о блоке за код-ревью""" +type CodeReviewInfo { + """Информация о проверках код-ревью студенческого проекта""" + codeReviewInstances: [CodeReviewInstance!]! + + """Усредненная оценка""" + averageMark: CodeReviewMark! + + """Ссылка на созданный MR""" + httpUrl: String + + """Фактический процент пройденного код-ревью""" + finalPercentageCodeReview: Int! +} + +"""Модель экземпляра код-ревью""" +type CodeReviewInstance { + """Идентификатор процесса код ревью модуля студента""" + studentCodeReviewId: ID! + + """Логин студента проводящего код ревью""" + reviewerLogin: String! + + """Финальная оценка проекта после код ревью""" + finalMark: Boolean + + """Время, когда установлена финальная оценка по проекту""" + markTime: DateTime + + """Навык за код-ревью""" + softSkill: Int +} + +"""""" +type CodeReviewLimitInfo { + """""" + limitByWeek: Int! + + """""" + usedByWeek: Int! +} + +"""Справочник оценок по код ревью""" +enum CodeReviewMark { + """Полностью не согласен""" + COMPLETELY_DISAGREE + + """Не согласен""" + DISAGREE + + """Трудно ответить""" + DIFFICULT_TO_ANSWER + + """Согласен""" + AGREE + + """Полностью согласен""" + COMPLETELY_AGREE +} + +"""Проекты участвующие в код-ревью, сгруппированные по статусу""" +type CodeReviewProjects { + """Ожидают начала код-ревью""" + waitForReview: [CodeReview!]! + + """Проходят раунд 1 код-ревью""" + firstRound: [CodeReview!]! + + """Проходят раунд 2 код-ревью""" + secondRound: [CodeReview!]! +} + +"""Этапы код-ревью""" +type CodeReviewRound { + """ID этапа код-ревью""" + codeReviewRoundId: ID! + + """ID процесса код-ревью модуля студента""" + studentCodeReviewId: ID! + + """ID публичного события""" + eventId: ID + + """Этап раунда код-ревью""" + codeReviewRoundType: CodeReviewRoundType! + + """Статус код-ревью""" + codeReviewStatus: CodeReviewStatus! + + """Время начала""" + startTime: DateTime! + + """Время завершения""" + endTime: DateTime! + + """Ссылка на MR проверяемого студента (персональный для ревьювера)""" + mergeRequestURL: String! + + """Время создания""" + createTime: DateTime! +} + +"""""" +enum CodeReviewRoundType { + """Раунд 1""" + FIRST_ROUND + + """Раунд 2""" + SECOND_ROUND +} + +"""""" +enum CodeReviewStatus { + """Ожидает ревью""" + WAIT_FOR_REVIEW + + """Ожидает начала раунда 1""" + WAIT_FOR_ROUND_1 + + """Ожидает начала раунда 2""" + WAIT_FOR_ROUND_2 + + """В ревью""" + IN_REVIEW + + """Завершен""" + COMPLETED + + """Провален""" + FAILED +} + +"""Оценка ревьювера""" +input CodeReviewersMarksInput { + """Идентификатор студента-ревьювера""" + studentId: UUID! + + """Оценка""" + mark: CodeReviewMark! +} + +"""Варианты языков программирования для разметки""" +enum CodeWidgetLanguageEnum { + """""" + JAVA_SCRIPT + + """""" + C + + """""" + JAVA + + """""" + C_SHARP + + """""" + KOTLIN + + """""" + PYTHON + + """""" + GO + + """""" + TYPE_SCRIPT + + """""" + HTML + + """""" + CSS + + """""" + SWIFT + + """""" + PHP + + """""" + BASH + + """""" + RUBY + + """""" + SQL +} + +"""Информация о "схлопнутых" комментариях в рамках задания""" +type CollapsedTaskCommentsInfo { + """ + Идентификатор задания в рамках которого подсчитано кол-во непрочитанных комментариев + """ + taskId: ID! + + """Уведомление о последнем комментарии по заданию""" + lastUnreadTaskCommentNotificationId: ID! + + """Кол-во не прочитанных комментариев по заданию""" + unreadTaskCommentsCount: Int! + + """ + Список ИД всех непрочитанных Уведомлений о комментарии, которые относятся к данному заданию + """ + collapsedLastUnreadTaskCommentNotificationIds: [ID!]! +} + +"""Файл общий для системы""" +type CommonFile { + """Код файла""" + code: CommonFileCode! + + """Описание файла""" + description: String! + + """Ссылка на файл""" + link: String! +} + +"""Коды общих для системы файлов""" +enum CommonFileCode { + """Руководство системного конфигуратора""" + SYSTEM_ADMIN_UG + + """Руководство конфигуратора""" + BUSINESS_ADMIN_UG + + """Памятка учителя""" + TEACHER_NOTES + + """Руководство учителя""" + TEACHER_UG + + """Руководство ученика""" + STUDENT_UG + + """Руководство родителя""" + PARENT_UG + + """Приглашение на Хакатон""" + ALL_ADDITIONAL_INFORMATION_1 + + """Положение о конкурсе""" + ALL_ADDITIONAL_INFORMATION_2 + + """Приложение - ИИ""" + ALL_ADDITIONAL_INFORMATION_3 +} + +"""Файл общий для системы""" +input CommonFileInput { + """Код файла""" + code: CommonFileCode! + + """Ссылка на файл""" + link: String! +} + +"""""" +type Complaint { + """ID жалобы""" + id: ID! + + """комментарий""" + comment: String + + """url страницы, на которую была написана жалоба""" + url: String! + + """путь к скриншоту в файлохранилище""" + screenshot: String! + + """Пользователь, отправивший жалобу""" + user: User! + + """Задание""" + task: Task + + """дополнительный материал""" + catalogItem: ContentItem + + """ФИО пользователя, загрузившего дополнительный материал""" + catalogItemCreator: User + + """ + Школа в рамках которой загружался материал (может отсутствовать, например материал глобальный) + """ + catalogItemSchool: SafeSchool + + """Предмет каталожного материала (если есть)""" + catalogItemSubject: Subject + + """Модуль""" + module: StudyModule + + """Комментарий исполнителя""" + executorComment: String + + """Статус жалобы""" + status: ComplaintAndSystemErrorStatus! + + """дата создания""" + createTime: Date + + """версия системы""" + systemVersion: String + + """тип исключения""" + exceptionType: String + + """уникальный идентификатор исключения""" + exceptionUniqueCode: UUID + + """сообщение об исключении""" + exceptionMessage: String + + """stackTrace""" + exceptionStacktrace: String + + """id школы""" + schoolId: UUID + + """логин пользователя""" + login: String + + """метод в котором произошла ошибка""" + method: String + + """браузер""" + browser: String + + """Причины жалобы""" + selectedReasons: [ComplaintReason!]! +} + +"""Статус жалобы""" +enum ComplaintAndSystemErrorStatus { + """Обработана""" + PROCESSED + + """В работе""" + IN_WORK + + """Не обработана""" + UNPROCESSED +} + +"""""" +input ComplaintInput { + """перечень причин жалоб""" + selectedReasons: [ID!]! + + """комментарий""" + comment: String + + """url страницы, на которую была написана жалоба""" + url: String! + + """путь к скриншоту в файлохранилище""" + screenshot: String! + + """id задания на которое отправлена жалоба""" + taskId: ID + + """id модуля на которое отправлена жалоба""" + moduleId: ID + + """Идентификатор айтема в каталоге""" + catalogItemId: UUID + + """версия системы""" + systemVersion: String + + """тип исключения""" + exceptionType: String + + """уникальный идентификатор исключения""" + exceptionUniqueCode: UUID + + """сообщение об исключении""" + exceptionMessage: String + + """stackTrace""" + exceptionStacktrace: String + + """id школы""" + schoolId: UUID + + """логин пользователя""" + login: String + + """метод в котором произошла ошибка""" + method: String + + """браузер""" + browser: String +} + +"""""" +type ComplaintReason { + """""" + id: ID! + + """""" + name: String! + + """""" + requiresComment: Boolean! + + """""" + requiresContext: Boolean! + + """""" + systemComplaint: Boolean! +} + +""" +Статус результата выполнения студентом своего модуля (проекта)/курса (группы проектов)/экзамена +""" +enum CompletionResultStatus { + """Успешно выполнен""" + SUCCESS + + """Провал при капитуляции""" + FAIL_BY_SURRENDER + + """Не достигнут обязательный порог прохождения""" + FAIL_BY_CALCULATION + + """Провал по дедлайну регистрации""" + FAIL_BY_REGISTRATION_DEADLINE +} + +"""Типы условий""" +enum ConditionType { + """Условие выбора проверяющих""" + CHECKED + + """Условия для работы с планами""" + ACCESSIBILITY + + """Условия выбора выполняющих""" + PERFORMING + + """Условия выбора для дедлайнов Ш21""" + DEADLINE + + """Условие строго последовательного прохождения уровней""" + SEQUENCE_LEVEL_ACCESS + + """ + Условия доступности модуля в планах с привязкой к конкретным датам для потока + """ + ACCESSIBILITY_DATE +} + +"""Конфигурация (параметр, настройка) системы""" +type Configuration { + """Код настройки""" + propertyCode: String! + + """Значение настройки""" + value: String! + + """ID объекта орг.структуры, для которого задана настройка""" + entityId: UUID + + """Метаинформация настройки""" + configurationMeta: ConfigurationMeta + + """Информация о тарифе (Лайт, ПМО)""" + tariffs: Tariffs +} + +"""""" +type ConfigurationByTariff { + """""" + tariffs: Tariffs + + """""" + configuration: [Configuration]! +} + +"""""" +input ConfigurationDeleteInput { + """""" + propertyCode: String! + + """""" + entityId: UUID! + + """""" + userId: UUID +} + +"""""" +type ConfigurationEntity { + """""" + userId: UUID + + """""" + schoolId: UUID + + """""" + regionId: UUID + + """""" + propertyCode: String! + + """""" + value: String! + + """""" + entityId: UUID + + """""" + configurationMeta: ConfigurationMeta + + """""" + tariffs: Tariffs +} + +""" +Фильтр для получения списка конфигураций c бэкенда по фильтрам для вкладок "Параметры" -> "Региональные", "Школьные" +""" +input ConfigurationFilterInput { + """""" + userIds: [UUID!] + + """""" + schoolIds: [UUID!] + + """""" + schoolTags: [String!] + + """""" + regionIds: [UUID!] + + """""" + propertyCodes: [String!] + + """""" + propertyValues: [String!] + + """""" + groupNames: [String!] + + """""" + configurationLevel: String +} + +"""""" +input ConfigurationInput { + """""" + propertyCode: String! + + """""" + value: String! + + """""" + entityId: UUID! + + """""" + userId: UUID +} + +"""Метаинформация настройки системы""" +type ConfigurationMeta { + """Тип значения настройки""" + type: ValueType! + + """Допустимое значение enum""" + possibleValues: [EnumValue!] + + """максимальное значение для численных, даты""" + maxLength: String + + """минимальная значение для численных, даты""" + minLength: String + + """длина строки будет передаваться с помощью regexp""" + regex: String + + """человеко читаемое название настройки""" + displayableName: String! + + """человеко читаемое название группы настроек""" + groupDisplayableName: String +} + +"""Список типов визуальных элементов для управления настройкой""" +enum ConfigurationPropertyInputType { + """Степпер""" + STEPPER + + """Текстовое поле""" + TEXT + + """Переключатель""" + SWITCHER +} + +"""""" +type ConfigurationsOfTariff { + """название конфигцрации""" + propertyCode: String! + + """значение по умолчанию""" + defaultValue: String +} + +"""""" +input ConfigurationsOfTariffInput { + """название конфигцрации""" + propertyCode: String! + + """значение по умолчанию""" + defaultValue: String +} + +"""Объяснения ограничения""" +type ConstraintExplanation { + """Название ограничения""" + name: String! + + """Количество срабатываний""" + matchCount: Int! + + """Срабатывания""" + matches: [EduConstraintMatch!]! + + """Счет""" + constraintScore: Score! +} + +"""Результат обработки ограничения""" +type ConstraintResult { + """текст, объясняющий результат обработки ограничения""" + text: String! + + """как отображать результат""" + isSuccessful: Boolean! +} + +"""""" +type ContactData { + """""" + type: String + + """""" + value: String! +} + +"""""" +type ContentBodyPage { + """""" + pageId: ID! + + """Номер страницы задания""" + pageNumber: Int! + + """Css-стили страницы""" + pageStyle: String + + """Список виджетов, размещенных на данной странице""" + sections: [ContentBodySection!]! +} + +"""""" +input ContentBodyPageInput { + """Идентификатор страницы""" + pageId: ID + + """Номер страницы задания""" + pageNumber: Int! + + """Css-стили страницы""" + pageStyle: String + + """Список виджетов, располагающихся на данной странице""" + sections: [ContentBodySectionInput!]! +} + +"""""" +type ContentBodySection { + """""" + sectionId: ID! + + """ + Опциональный порядок секции внутри страницы (НЕОБХОДИМ ДЛЯ МИГРАЦИИ МОТОБЛОКОВ) + """ + sectionOrder: Int + + """Css-стили секции""" + sectionStyle: String + + """Тип секции""" + sectionType: SectionType! + + """Список виджетов""" + widgets: [ContentBodyWidget!]! + + """Список виджетов в секции""" + sectionWidgets: [Widget!] +} + +"""""" +input ContentBodySectionInput { + """Идентификатор секции""" + sectionId: ID + + """ + Опциональный порядок секции внутри страницы (НЕОБХОДИМ ДЛЯ МИГРАЦИИ МОТОБЛОКОВ) + """ + sectionOrder: Int + + """Css-стили секции""" + sectionStyle: String + + """Тип секции""" + sectionType: SectionType! + + """Список виджетов DEPRECATED!!!""" + widgets: [ContentBodyWidgetInput!]! + + """Список виджетов в секции""" + sectionWidgets: [WidgetInput!] +} + +"""""" +type ContentBodyWidget { + """""" + widgetId: ID! + + """Порядковый номер виджета на странице задания""" + widgetNumber: Int! + + """Тип контента виджета""" + contentWidgetType: ContentWidgetTypeEnum! + + """Содержимое виджета""" + body: String! + + """Правильный ответ""" + correctAnswer: String + + """Информация для виджета бизнес-типа (ContentWidgetTypeEnum=BUSINESS)""" + businessWidgetInfo: BusinessWidgetInfo + + """Css-стили виджета""" + widgetStyle: String +} + +"""""" +input ContentBodyWidgetInput { + """Идентификатор виджета""" + widgetId: ID + + """Порядковый номер виджета на странице""" + widgetNumber: Int! + + """Тип контента виджета""" + contentWidgetType: ContentWidgetTypeEnum! + + """Содержимое виджета""" + body: String! + + """Правильный ответ""" + correctAnswer: String + + """Бизнесс тип (используется только если ContentWidgetTypeEnum=Business)""" + businessType: BusinessTypeEnum + + """Css-стили виджета""" + widgetStyle: String +} + +"""Производственный статус Учебного Модуля""" +enum ContentEntityProductionStatus { + """Черновик, автоматически присваивается после создания модуля""" + DRAFT + + """Верифицирован корректором, переход из DRAFT или VERIFIED""" + VERIFIED_BY_CORRECTOR + + """Верифицирован экспертом, переход из DRAFT или VERIFIED""" + VERIFIED_BY_EXPERT + + """ + Верифицирован, присваивается автоматически, если проставляется обе визы: и эксперта и корректора + """ + VERIFIED + + """На корректуре, переход из DRAFT и IN_REVIEW""" + ON_PROOFREADING + + """На экспертизе, переход из DRAFT и ON_PROOFREADING""" + IN_REVIEW + + """Опубликован, переход из VERIFIED""" + PUBLISHED +} + +"""Тип сущности, которая находится в определенном статусе""" +enum ContentEntityType { + """""" + GOAL + + """""" + TASK +} + +"""""" +enum ContentExternalCodeTypeEnum { + """Тип кода к модулю в системе Просвещение""" + GOAL_AXAPTA_ID + + """Тип кода к мягкому навыку в системе Просвещение""" + SOFT_SKILL_PROSVESCHENIE_CODE +} + +"""Код сущности сервиса Контент во внешней системе""" +type ContentExternalEntityCode { + """""" + id: ID! + + """Внешняя система""" + externalSystem: ContentExternalSystemEnum! + + """Тип кода""" + codeType: ContentExternalCodeTypeEnum! + + """Код""" + code: String! +} + +"""""" +enum ContentExternalSystemEnum { + """Просвещение""" + PROSVESCHENIE +} + +"""Модель для фильтрации данных в отчете БМ""" +type ContentFilterData { + """идентификатор значения""" + value: ID! + + """Метка для UI""" + label: String! + + """Выбрано значение или нет""" + checked: Boolean + + """Маркер мандаторности""" + isAlwaysOnValue: Boolean + + """подчиненные данные для фильтрации""" + children: [ContentFilterData] +} + +"""""" +input ContentInput { + """Тип контента""" + contentType: ContentTypeEnum! + + """Идентификатор внешнего задания""" + externalTaskId: ID + + """Содержимое задания""" + taskContent: String + + """Оценка задания""" + taskEvaluation: TaskEvaluationInput + + """Содержимое страниц задания""" + pages: [ContentBodyPageInput!]! + + """Тип представления контента""" + contentViewType: ContentViewTypeEnum + + """Представление контента в стандартном виде""" + simpleView: ContentSimpleViewInput + + """Представление контента в расширенном виде""" + proView: ContentProViewInput + + """ + Представление контента в мотивирующих заданияс с мигрированным мотивационным блоком + """ + motivationView: ContentMotivationViewInput + + """Представление контента для ш21""" + s21View: ContentS21ViewInput + + """Список страниц для контента ш21""" + s21PageList: [ContentS21PageInput!] + + """Список секций контента""" + sectionList: [ContentSectionInput!] + + """Список секций мотоблока""" + mbSectionList: [ContentMBSectionInput!] + + """Список виджетов контента""" + widgetList: [ContentWidgetInput!] +} + +"""Представление материала из каталога""" +type ContentItem { + """Идентификатор айтема в каталоге""" + itemId: UUID! + + """ + Идентификатор дополнительного материала (связи материала из каталога с предметом) + """ + subjectContentId: UUID @deprecated(reason: "Будет удален, теперь используется subjectContentBookmarked") + + """Признак того, существует ли связь айтема из каталога с предметом""" + subjectContentBookmarked: Boolean + + """Тип материала""" + contentType: AdditionalContentType! + + """Источник материала""" + contentSource: String + + """URL для загрузки (открытия) материала""" + contentUrl: String! + + """Название материала""" + contentName: String! + + """Описание""" + description: String + + """Имя файла""" + fileName: String + + """Размер файла в мегабайтах""" + fileSize: Int + + """Длительность (в секундах)""" + duration: Int + + """Расширение файла""" + fileExtension: String + + """Издатель материала (например, видеохостинг)""" + contentPublisher: String + + """Автор материала""" + contentAuthor: String + + """URL файла предпросмотра дополнительного материала (изображения)""" + previewUrl: String + + """Теги материала""" + tags: [String!]! @deprecated + + """Идентификаторы предметов, к которым относится данный материал""" + subjectIds: [ID!]! + + """ + Массив учебных параллелей, с которыми связан данный материал. + Может быть пустым, если материал относится ко всем параллелям + """ + stageIds: [AdditionalContentStage!]! @deprecated(reason: "Переход к Stage") + + """Список учебных параллелей""" + stages: [Stage!]! + + """Идентификатор пользователя, загрузившего данный материал""" + creatorUserId: UUID! + + """Дата и время создания""" + createDate: DateTime! + + """ + Признак того, может ли текущий пользователь редактировать данный материал + """ + editable: Boolean! @deprecated(reason: "Более не используется как признак") + + """ + Признак того, может ли пользователь удалять связь айтема из каталога с предметом + """ + subjectContentEditable: Boolean! @deprecated(reason: "Более не используется как признак") + + """Учебный материал (Учебник)""" + educational: Boolean + + """Информационный материал (Учусь учиться)""" + informational: Boolean + + """Подготовительный материал (Для подготовки к олимпиадам и экзаменам)""" + preparative: Boolean + + """Дата начала""" + startDate: DateTime + + """Дата окончания""" + endDate: DateTime + + """Регион""" + regions: [UUID!] + + """Онлайн/Офлайн""" + format: AdditionalContentFormat + + """Добавлен ли элемент в закладки""" + itemBookmarked: Boolean + + """Добавлен ли материал в какую-либо подборку""" + itemInSelection: Boolean! + + """Идентификатор группы, для которой элемент добавлен в закладки""" + bookmarkedForGroupId: ID + + """Категории, к которым принадлежит элемент""" + categories: [ItemCategory!]! + + """статус айтема в человекочитаемом виде""" + status: String! + + """теги с иерархией""" + tagsV2: [TagHierarchyElement!]! + + """плоский список кодов для тегов""" + tagIds: [ID!]! + + """Тип материала с подтипом""" + extendedContentType: ExtendedContentType! + + """Статус верификации""" + productionStatus: ContentEntityProductionStatus + + """Информация о цене и факте покупки""" + pricing: ContentItemPricing! + + """Признак того что пользователь имеет право редактировать материал""" + canEdit: Boolean + + """Мягкие навыки""" + softSkills: [SoftSkill!] + + """Трудозатраты""" + laboriousness: String + + """Тип задания""" + taskType: TaskTypeEnum + + """Стаус прохождения модуля для ученика""" + moduleState: StudentModuleState + + """ФИО учителя, назначивший модуль на план для ученика""" + planTeacherFullName: String + + """Планы, в которые входит модуль, для учителя""" + plans: [ClassPlanMediateka!] + + """id модуля или задания (только для модулей и заданий)""" + externalId: Int + + """ + Признак того, что пользователь имеет право копировать материал (только для задания и модуля) + """ + canCopy: Boolean + + """Типы проверки заданий""" + checkTypes: [TaskCheckEnum]! + + """Область видимости""" + scope: ScopeEnum + + """Субтитры для видео""" + subtitleLink: String + + """Ссылка на файл субтитров для определенного языка""" + subtitleLinks: [SubtitleLinkForLanguage!] + + """Признак активности item (false значение для архивированных item)""" + active: Boolean +} + +"""""" +type ContentItemPricing { + """ + Признак платности материала. true, если материал платный. false, + если материал бесплатныЙ или если сервис цен был недоступен. + """ + paid: Boolean! + + """ + Цена (в рублях). null, если материал бесплатный или если сервис цен был недоступен. Цена обязана быть, + если материал платный (установлен флаг paid). + """ + price: Price + + """ + Куплен материал или нет. null для бесплатных материалов; + #true, если материал куплен или был недоступен сервис подписок; #false, если сервис + подписок был доступен и вернул информацию, что подписка для текущего пользователя не оформлена. + """ + bought: Boolean + + """ + Дата окончания покупки/подписки. null, если элемент бесплатный, не оплачен, бессрочный или сервис + подписок был недоступен. Не null, если сервис подписок вернул информацию об активной подписке для + пользователя с датой завершения. + """ + expirationDate: Date +} + +""" +Обновление материалов из каталога +Набор параметров для обновления материала из каталога +""" +input ContentItemUpdateInput { + """Название материала""" + contentName: String! + + """Издатель материала (например, видеохостинг)""" + contentPublisher: String + + """Автор материала""" + contentAuthor: String + + """Описание""" + description: String + + """Идентификаторы предметов, к которым относится данный материал""" + subjectIds: [ID!]! + + """ + НЕ ИСПОЛЬЗОВАТЬ, УСТАРЕЛО + Использовать stageIdsV2 + Идентификаторы учебных параллелей, с которыми связан материал + """ + stageIds: [AdditionalContentStage!]! + + """ + URL предпросмотра материала (изображения), являющийся путём к файловому серверу + """ + previewUrl: String + + """ + Список тегов материала + deprecated "Use tagsV2" + """ + tags: [String!]! + + """Теги V2""" + tagIdsV2: [ID!] + + """Учебный материал(Учебник)""" + educational: Boolean + + """Информационный материал (Учусь учиться)""" + informational: Boolean + + """Подготовительный материал (Для подготовки к олимпиадам и экзаменам)""" + preparative: Boolean + + """Дата начала материла""" + startDate: DateTime + + """Дата окончания матерала""" + endDate: DateTime + + """Регион материала""" + regions: [UUID!] + + """Онлайн/Офлайн материала""" + format: AdditionalContentFormat + + """Категории, к которым принадлежит материал""" + categoryIds: [ID!]! + + """Уровень видимости материала""" + scope: ScopeEnum + + """Субтитры для видео""" + subtitleLink: String + + """Ссылка на файл субтитров для определенного языка""" + subtitleLinks: [SubtitleLinkForLanguageInput!] +} + +""" +Обновление материалов из каталога +Набор параметров для обновления материала из каталога +""" +input ContentItemUpdateInputV2 { + """Название материала""" + contentName: String! + + """Издатель материала (например, видеохостинг)""" + contentPublisher: String + + """Автор материала""" + contentAuthor: String + + """Описание""" + description: String! + + """Идентификаторы предметов, к которым относится данный материал""" + subjectIds: [ID!] + + """Идентификаторы учебных параллелей (Stage) материала""" + stageIds: [ID!]! + + """ + URL предпросмотра материала (изображения), являющийся путём к файловому серверу + """ + previewUrl: String + + """Список тегов материала""" + tags: [String!]! + + """Теги V2""" + tagIdsV2: [ID!] + + """Учебный материал(Учебник)""" + educational: Boolean + + """Информационный материал (Учусь учиться)""" + informational: Boolean + + """Подготовительный материал (Для подготовки к олимпиадам и экзаменам)""" + preparative: Boolean + + """Дата начала материла""" + startDate: DateTime + + """Дата окончания матерала""" + endDate: DateTime + + """Регион материала""" + regions: [UUID!] + + """Онлайн/Офлайн материала""" + format: AdditionalContentFormat + + """Категории, к которым принадлежит материал""" + categoryIds: [ID!] + + """URL со ссылкой на внешний материал""" + contentUrl: String + + """Уровень видимости материала""" + scope: ScopeEnum + + """Субтитры для видео""" + subtitleLink: String + + """Ссылка на файл субтитров для определенного языка""" + subtitleLinks: [SubtitleLinkForLanguageInput!] +} + +"""вид контента""" +enum ContentKind { + """не поддерживаемый вид (неверный префикс shortcut)""" + UNSUPPORTED + + """ + созданный объект Task с необходимыми атрибутами (для поиска по табл. tasks) + """ + TASK + + """внешний ЭОР (для поиска по табл. external_tasks)""" + EOR +} + +"""Описание поставки контента""" +type ContentLoad { + """""" + id: ID! + + """""" + contentProvider: ContentProvider! + + """""" + created: DateTime! + + """""" + description: String! +} + +"""""" +type ContentMBSection { + """Идентификатор секции""" + entityId: ID! + + """Тип секции""" + sectionType: String! + + """Количество блоков в секции""" + blocksCount: Int + + """Параметр фиксации высоты\резиновости секции""" + isLockedHeight: Boolean! + + """Список сущностей, связанных с секцией""" + items: [ContentMBSectionItem!]! +} + +"""""" +input ContentMBSectionInput { + """Идентификатор секции""" + entityId: ID! + + """Тип секции""" + sectionType: String! + + """Количество блоков в секции""" + blocksCount: Int + + """Параметр фиксации высоты\резиновости секции""" + isLockedHeight: Boolean! + + """Список сущностей, связанных с секцией""" + items: [ContentMBSectionItemInput!]! +} + +"""""" +type ContentMBSectionItem { + """Идентификатор связанной сущности""" + targetEntityId: ID! + + """Тип связанной сущности""" + target: String! + + """Номер позиции сущности в секции""" + positionId: Int! +} + +"""""" +input ContentMBSectionItemInput { + """Идентификатор связанной сущности""" + targetEntityId: ID! + + """Тип связанной сущности""" + target: String! + + """Номер позиции сущности в секции""" + positionId: Int! +} + +"""""" +enum ContentMigrationEntityType { + """""" + MODULE + + """""" + TASK + + """""" + EXTERNAL_TASK + + """""" + EDUCATIONAL_MATERIALS +} + +"""""" +type ContentMotivationView { + """Идентификатор представления""" + entityId: String! + + """Список сущностей, связанных с представлением""" + items: [ContentMotivationViewItem!]! +} + +"""""" +input ContentMotivationViewInput { + """Идентификатор представления""" + entityId: String! + + """Список сущностей, связанных с представлением""" + items: [ContentMotivationViewItemInput!] +} + +"""""" +type ContentMotivationViewItem { + """Идентификатор связанной сущности""" + targetEntityId: ID! + + """Тип связанной сущности""" + target: String! + + """Номер по порядку""" + order: Int! +} + +"""""" +input ContentMotivationViewItemInput { + """Идентификатор связанной сущности""" + targetEntityId: ID! + + """Тип связанной сущности""" + target: String! + + """Номер по порядку""" + order: Int! +} + +"""""" +type ContentMutations { + """Копирование модуля, возвращает скопированный модуль""" + copyModule( + """Идентификатор оригинала""" + moduleId: ID! + + """ + Клиентский timestamp, который приклеивается к названию модуля в конце. НЕ ВАЛИДИРУЮТСЯ НА СТОРОНЕ БЭКЭНДА!!! + Никаких проверок на то, что в этой строке хранится действительно timestamp НЕ ПРОИЗВОДИТСЯ!!! + """ + localTimestamp: String! + ): StudyModule! + + """Копирование модуля, возвращает скопированный модуль""" + copyModules( + """Идентификатор оригинала""" + moduleId: [ID!]! + + """ + Клиентский timestamp, который приклеивается к названию модуля в конце. НЕ ВАЛИДИРУЮТСЯ НА СТОРОНЕ БЭКЭНДА!!! + Никаких проверок на то, что в этой строке хранится действительно timestamp НЕ ПРОИЗВОДИТСЯ!!! + """ + localTimestamp: String! + ): [StudyModule!]! + + """Сохранение сессии на печать задания""" + saveTaskPrint(taskId: ID!): PrintTaskMeta! + + """ + Переводит сущность контента в определенный производственный статус. + Возвращает идентификатор созданной записей в content_entity_production_status_logs + """ + changeContentEntityProductionStatus( + """Идентификатор сущности контента""" + entityId: String! + + """Тип сущности контента""" + entityType: ContentEntityType! + + """Новый статус""" + status: ContentEntityProductionStatus! + ): ChangeContentProductionStatusResponse! + + """Мутация для создания задания""" + createTask( + """Мета Задания""" + taskMeta: TaskMetaInput + + """Информация для привязки Задания к Слоту""" + linkSlot: LinkSlotInput + ): Task! + + """Мутация для обновления задания""" + updateTask( + """Идентификатор Задания""" + taskId: ID! + + """Мета Задания""" + taskMeta: TaskMetaInput + ): Task! + + """Мутация для создания контента""" + createContent( + """Контент""" + content: ContentInput + ): TaskContent! + + """Мутация для обновления контента""" + updateContent( + """Идентификатор контента""" + contentId: String! + + """Контент""" + content: ContentInput + ): TaskContent! + + """Мутация для привязки контента к заданию""" + linkContentToTask( + """Идентификатор задания""" + taskId: ID! + + """Идентификатор контента""" + contentId: String! + ): Task! + + """Смена статуса или видимости модуля/темы""" + changeScopeAndStatusForContentEntities( + """ + Запрос на массовое изменение скоупа и/или статуса производства сущности контента + """ + requests: ChangeScopeAndStatusForContentEntitiesRequest! + ): ScopeAndStatusChangeResponse! + + """Смена видимости модуля""" + changeScopeGoalAndTask(goalId: ID!, scope: ScopeEnum!): StudyModule! +} + +"""""" +type ContentProView { + """Идентификатор представления""" + entityId: String! + + """Список сущностей, связанных с представлением""" + items: [ContentProViewItem!]! +} + +"""""" +input ContentProViewInput { + """Идентификатор представления""" + entityId: String! + + """Список сущностей, связанных с представлением""" + items: [ContentProViewItemInput!] +} + +"""""" +type ContentProViewItem { + """Идентификатор связанной сущности""" + targetEntityId: ID! + + """Тип связанной сущности""" + target: String! + + """Номер по порядку""" + order: Int! +} + +"""""" +input ContentProViewItemInput { + """Идентификатор связанной сущности""" + targetEntityId: ID! + + """Тип связанной сущности""" + target: String! + + """Номер по порядку""" + order: Int! +} + +"""История изменений производственного статуса Учебного Модуля""" +type ContentProductionStatusChangeLog { + """Идентификатор записи о нахождении в статусе""" + logId: ID! + + """Тип сущности, которая находится в определенном статусе""" + entityType: ContentEntityType! + + """Идентификатор экземпляра сущности""" + entityId: String! + + """Статус, согласно enum""" + status: ContentEntityProductionStatus! + + """Дата-время перехода в статус""" + createTime: DateTime! + + """Дата-время перехода в следующий статус""" + endTime: DateTime + + """Пользователь, который перевел в статус""" + createUser: User! +} + +"""Поставщик контента""" +type ContentProvider { + """""" + id: ID! + + """""" + name: String! + + """""" + description: String! + + """""" + externalContentProvider: ExternalContentProviderEnum! + + """""" + logoUrl: String +} + +"""""" +type ContentQueries { + """ + Возвращает список тегов, полученных по идентификатору сущности и массиву типов тегов + """ + getContentTags( + """Идентификатор сущности""" + entityId: ID! + + """Тегируемая сущность""" + taggedEntityType: TaggedEntityTypeEnum! + + """Список типов тега""" + tagTypes: [ContentTagTypeEnum!]! + ): [ContentTag!]! + + """ + Возвращает список тегов, полученных по названию и типам тегов с заданным лимитом и оффсетом + """ + searchTags( + """ + Имя для поиска длинной более 2х символов. Поиск менее чем по 3м символам заканчивается ошибкой + """ + filterTag: String! + + """ + Список типов тега, так же используется при поиске с ключевым словом AND + """ + filterTagType: [ContentTagTypeEnum!]! + + """""" + limit: Int! + + """""" + offset: Int! + ): [ContentTag!]! + + """Получение Книг по идентификаторам.""" + getBooksByIds(bookIds: [ID!]!): [Book!]! + + """ + Возвращает рандомные варианты по идентификаторам виджетов. + В случае если виджет невариативен (variationMeta = null) ничего не вернет в массиве + count - кол-во вариантов, которые вернет контент по каждому widgetId (НЕ БОЛЬШЕ 100) + """ + getRandomVariantsByWidgetIds(widgetIds: [ID!]!, count: Int!): [WidgetVariant!]! + + """Получения контента по его идентификатору""" + getContent( + """Идентификатор контента""" + contentId: String! + ): TaskContent! +} + +"""""" +type ContentS21Page { + """Идентификатор страницы""" + entityId: ID! + + """Список сущностей, связанных со страницей""" + items: [ContentS21PageItem!]! +} + +"""""" +input ContentS21PageInput { + """Идентификатор страницы""" + entityId: ID! + + """Список сущностей, связанных со страницей""" + items: [ContentS21PageItemInput!]! +} + +"""""" +type ContentS21PageItem { + """Идентификатор связанной сущности""" + targetEntityId: ID! + + """Тип связанной сущности""" + target: String! + + """Номер по порядку""" + order: Int! +} + +"""""" +input ContentS21PageItemInput { + """Идентификатор связанной сущности""" + targetEntityId: ID! + + """Тип связанной сущности""" + target: String! + + """Номер по порядку""" + order: Int! +} + +"""""" +type ContentS21View { + """Идентификатор представления""" + entityId: String! + + """Список сущностей, связанных с представлением""" + items: [ContentS21ViewItem!]! +} + +"""""" +input ContentS21ViewInput { + """Идентификатор представления""" + entityId: String! + + """Список сущностей, связанных с представлением""" + items: [ContentS21ViewItemInput!]! +} + +"""""" +type ContentS21ViewItem { + """Идентификатор связанной сущности""" + targetEntityId: ID! + + """Тип связанной сущности""" + target: String! + + """Номер по порядку""" + order: Int! +} + +"""""" +input ContentS21ViewItemInput { + """Идентификатор связанной сущности""" + targetEntityId: ID! + + """Тип связанной сущности""" + target: String! + + """Номер по порядку""" + order: Int! +} + +"""""" +type ContentSection { + """Идентификатор секции""" + entityId: ID! + + """Список сущностей, связанных с секцией""" + items: [ContentSectionItem!]! + + """Опции секции""" + options: ContentSectionOptions +} + +"""""" +input ContentSectionInput { + """Идентификатор секции""" + entityId: ID! + + """Список сущностей, связанных с секцией""" + items: [ContentSectionItemInput!]! + + """Опции секции""" + options: ContentSectionOptionsInput +} + +"""""" +type ContentSectionItem { + """Идентификатор связанной сущности""" + targetEntityId: ID! + + """Тип связанной сущности""" + target: String! + + """Расположение секции контента""" + layout: String! + + """Опции элемента секции""" + options: ContentSectionItemOptions +} + +"""""" +input ContentSectionItemInput { + """Идентификатор связанной сущности""" + targetEntityId: ID! + + """Тип связанной сущности""" + target: String! + + """Расположение секции контента""" + layout: String! + + """Опции элемента секции""" + options: ContentSectionItemOptionsInput +} + +"""""" +type ContentSectionItemOptions { + """Цвет фона элемента""" + backgroundColor: String + + """Тень элемента""" + boxShadow: Boolean +} + +"""""" +input ContentSectionItemOptionsInput { + """Цвет фона элемента""" + backgroundColor: String + + """Тень элемента""" + boxShadow: Boolean +} + +"""""" +type ContentSectionOptions { + """Цвет фона секции""" + backgroundColor: String + + """Изображение фона секции""" + backgroundImage: String + + """Минимальная высота секции""" + minimumHeight: Int +} + +"""""" +input ContentSectionOptionsInput { + """Цвет фона секции""" + backgroundColor: String + + """Изображение фона секции""" + backgroundImage: String + + """Минимальная высота секции""" + minimumHeight: Int +} + +"""Подборка материалов (из каталога)""" +type ContentSelection { + """ИД подборки""" + selectionId: UUID! + + """Имя для отображения""" + name: String! + + """Содержимое подборки""" + items(page: PagingInput!): [ContentItem!]! +} + +"""""" +type ContentSimpleView { + """Идентификатор представления""" + entityId: String! + + """Список сущностей, связанных с представлением""" + items: [ContentSimpleViewItem!]! +} + +"""""" +input ContentSimpleViewInput { + """Идентификатор представления""" + entityId: String! + + """Список сущностей, связанных с представлением""" + items: [ContentSimpleViewItemInput!] +} + +"""""" +type ContentSimpleViewItem { + """Идентификатор связанной сущности""" + targetEntityId: ID! + + """Тип связанной сущности""" + target: String! + + """Номер по порядку""" + order: Int! +} + +"""""" +input ContentSimpleViewItemInput { + """Идентификатор связанной сущности""" + targetEntityId: ID! + + """Тип связанной сущности""" + target: String! + + """Номер по порядку""" + order: Int! +} + +"""Представление словарной сущности (тип материала, тип книги и т.п.)""" +type ContentSubtype { + """Идентификатор сущности""" + id: ID! + + """Читаемое название (для отображения)""" + title: String! +} + +"""Тег контента""" +type ContentTag { + """ID тега""" + tagId: ID! + + """Тип тэга""" + tagType: ContentTagTypeEnum! + + """Имя тэга""" + tagName: String! + + """ + Идентификатор тэга в Медиатеке (не используется при кастомном тэгировании) + """ + mediatekaTagId: ID +} + +"""Тэг контента""" +input ContentTagInput { + """Тип тэга""" + tagType: ContentTagTypeEnum! + + """Тэг""" + tagName: String! + + """ + Идентифкатор тэга в Медиатеке (не используется при кастомном тэгировании) + """ + mediatekaTagId: ID +} + +"""Типы тегов""" +enum ContentTagTypeEnum { + """Старые кастомные тэги (редактируемые)""" + CUSTOM + + """Тэги Медиатеки (нередактируемые)""" + MEDIATEKA +} + +"""""" +type ContentTagsMutations { + """задать список тэгов tags для объекта objectType с кодом objectId""" + setTags(objectType: TaggedObjectsEnum!, objectId: ID!, tags: [String!]!): Boolean @deprecated(reason: "Use setContentTags instead.") +} + +"""""" +type ContentTagsQueries { + """получить список тегов для для объекта objectType с кодом objectId""" + getTags(objectType: TaggedObjectsEnum!, objectId: ID!): [String!]! @deprecated + + """получить список всех тэгов (сортировка по алфавиту)""" + searchTags(tag: String, limit: Int, offset: Int): [String!]! @deprecated +} + +"""Тип задания""" +enum ContentTypeEnum { + """Тест Survey""" + JSON + + """Простое текстовое задание""" + HTML + + """Задание, созданное в экспертном режиме""" + MARKDOWN + + """Задание из внешнего поставщика контента""" + EXTERNAL_CONTENT + + """Задание с редактором кода""" + CODE_MIRROR + + """iFrame задание от поставщика внешнего контента""" + IFRAME + + """ + Задание "нового конструктора и плеера" + """ + GENERIC + + """Задание, содержащее тренажёр""" + TRAINING_INTEGRATION + + """Задание, которое проходится на внешнем ресурсе""" + EXTERNAL_TASK +} + +"""Тип представления контента (сетка)""" +enum ContentViewTypeEnum { + """Простое представление""" + SIMPLE + + """Расширенное представление""" + PRO + + """Представление мотоблока""" + MOTIVATION + + """Представление ш21""" + S21 +} + +"""""" +type ContentWidget { + """Идентификатор виджета""" + entityId: ID! + + """тело виджета""" + body: WidgetBody! + + """Тип виджета""" + widgetType: WidgetTypeEnum! + + """Тип группы виджетов""" + widgetGroupType: WidgetGroupTypeEnum! + + """Мета-информация о вариативности виджета""" + variationMeta: WidgetVariationMeta + + """Список сущностей, связанных с виджетом""" + items: [ContentWidgetItem!]! +} + +"""""" +input ContentWidgetInput { + """Идентификатор виджета""" + entityId: ID! + + """тело виджета""" + body: WidgetBodyCompositionInput + + """Тип виджета""" + widgetType: WidgetTypeEnum! + + """Тип группы виджетов""" + widgetGroupType: WidgetGroupTypeEnum! + + """Мета-информация о вариативности виджета""" + variationMeta: WidgetVariationMetaInput + + """Список сущностей, связанных с виджетом""" + items: [ContentWidgetItemInput!]! +} + +"""""" +type ContentWidgetItem { + """Идентификатор связанной сущности""" + targetEntityId: ID! + + """Тип связанной сущности""" + target: String! +} + +"""""" +input ContentWidgetItemInput { + """Идентификатор связанной сущности""" + targetEntityId: ID! + + """Тип связанной сущности""" + target: String! +} + +"""Тип виджета""" +enum ContentWidgetTypeEnum { + """ + Интерактивный(есть возможность ввести ответ и может быть предусмотрен правильный ответ) + """ + INTERACTIVE + + """Информационный(для информации, без ответа)""" + INFO + + """ + Смешанный(есть возможность ввести ответ, но правильного ответа не предусмотрено) + """ + MIXED + + """Бизнесс-тип с предобработкой на backend""" + BUSINESS +} + +"""""" +enum ControlWorkStatus { + """Контрольная работа запланирована""" + PLANNED + + """Контрольная работа идет""" + STARTED + + """Контрольная работа закрыта""" + CLOSED + + """Черновик, создана, но не запланирована""" + DRAFT +} + +"""Результат удаления варианта контрольной работы""" +type ControlWorkVariantRemoveResult { + """Контрольная работа, вариант которой удаляют""" + classSubjectControlWorkModel: ClassSubjectControlWork! + + """флаг - успешно ли прошла операция удаления""" + isSuccess: Boolean! + + """Кол-во учеников, которых аффектит удаление варианта контрольной работы""" + affectedStudentsByRemoveCount: Int! +} + +"""Данные для расчета разбаловки""" +type CountInfo { + """Балл за задание""" + points: Int! + + """Процент бонусной части""" + percentageOfBonus: Int! + + """Навыки и проценты для задания""" + taskSkills: [SkillWithNameInChecklist!]! + + """Навыки и проценты для каждого вопроса""" + questionSkills: [SkillWithNameInChecklist!]! + + """Категория секции""" + sectionCategory: String! +} + +"""Новые данные разбалловки""" +input CountInfoInput { + """Балл за задание""" + points: Int! + + """Процент бонусной части""" + percentageOfBonus: Int! + + """Навыки и проценты для задания""" + taskSkills: [SkillWithNameInChecklistInput!]! + + """Навыки и проценты для каждого вопроса""" + questionSkills: [SkillWithNameInChecklistInput!]! +} + +"""""" +type CounterInfo { + """всего подборок""" + total: Int! + + """кол-во назначенных подборок""" + bound: Int! +} + +"""""" +type CounterInvite { + """""" + teamId: UUID! + + """""" + teamName: String! +} + +"""""" +type CounterView { + """""" + teamId: UUID! + + """""" + teamName: String! +} + +"""""" +enum CountingFormulaType { + """""" + AVERAGE + + """""" + WEIGHTED + + """""" + MINIMUM + + """""" + MAXIMUM +} + +"""""" +type Country { + """""" + id: UUID! + + """""" + name: String! + + """""" + hasRegions: Boolean! +} + +"""Название сущностей, назначенных на курс с привязкой к типу""" +type CourseAssignedEntitiesNamesByType { + """Тип сущности, на которую назначается курс""" + assignedEntityType: LocalCourseAssignedEntityType! + + """Количество сущностей""" + countEntities: Int! + + """Массив названий сущностей, относящихся этому типу""" + assignedEntitiesNames: [String!]! +} + +"""Базовые параметры курса""" +type CourseBaseParameters { + """Признак, является ли курс оцениваемым""" + isGradedCourse: Boolean! +} + +"""Информация о консистентности курса""" +type CourseConsistency { + """Идентификатор курса""" + courseId: ID! + + """Название курса""" + name: String! + + """Признак консистентности курса""" + isConsistent: Boolean! + + """Признак консистентности всех проектов в курсе""" + isAllGoalsConsistent: Boolean! + + """Список объектов, содержащих параметры консистентности проектов курса""" + goalConsistencyModels: [GoalConsistency!] + + """В курсе есть проект без дедлайнов и со случайным формированием команды""" + hasDeadlineFreeRandomTeam: Boolean + + """Конструкторы для проекта корректны""" + isConstructorsValid: Boolean +} + +"""Информация на обложке курса для студента""" +type CourseCoverInformation { + """Идентификатор локального курса""" + localCourseId: ID + + """Наименование курса""" + courseName: String! + + """Тип курса""" + courseType: CourseType! + + """Статус курса (deprecated)""" + courseStatus: CourseStatus @deprecated(reason: "изменен на расширенный список отображаемых статусов (DisplayedCourseStatus)") + + """Статус курса""" + displayedCourseStatus: DisplayedCourseStatus + + """История статусов курсов (отсортированная от раннего к позднему)""" + courseStatusesHistory: [CourseStatus!]! + + """Фактический % выполнения курса""" + finalPercentage: Int! + + """Дата начала регистрации на курс""" + signUpStartDate: DateTime! + + """Дата окончания регистрации на курс""" + signUpEndDate: DateTime! + + """Дата начала выполнения проекта""" + workStartDate: DateTime + + """Дата окончания выполнения проекта""" + workEndDate: DateTime + + """Описание курса""" + courseDescription: String! + + """Максимальный балл за прохождение курса""" + experience: Int! + + """Фактический балл за прохождение курса""" + experienceFact: Int + + """Суммарная продолжительность всех проектов внутри курса""" + duration: Int! + + """Список гибких навыков с макс. кол-вом очков за все задания этого курса""" + softSkills: [SoftSkillPoint!]! + + """Кол-во текущих пользователей которые сейчас проходит курс""" + currentStudentCount: Int! + + """Кол-во попыток прохождения курса текущими пользователями""" + retriesOfCurrentStudents: Int! + + """Кол-во команд ожидающих проверки по групповым проектам""" + teamsWaitingEvaluationCount: Int! + + """Кол-во успешных завершений курса""" + finishedCount: Int! + + """Кол-во попыток прохождения курса""" + retriesCount: Int! + + """Статус результата последней попытки выполнения курса""" + resultCourseCompletion: CompletionResultStatus + + """Возможно ли запустить повторную попытку выполнения курса""" + isRetryAvailable: Boolean + + """Отображение кнопки для ручного завершения курса""" + isCourseCanBeFinished: Boolean +} + +"""""" +type CourseGoalExperience { + """Идентификатор проекта в глобальном курсе""" + courseGoalId: ID! + + """Опыт, выдаваемый за прохождение проекта в курсе""" + experience: Int! +} + +"""Модель весов для проекта в курсе""" +input CourseGoalWeightInput { + """Идентификатор проекта в глобальном курсе""" + globalCourseGoalId: ID! + + """Вес проекта в курсе""" + weight: Int! +} + +"""Модель весов для проекта в курсе c XP""" +type CourseGoalXpAndWeight { + """Идентификатор проекта в глобальном курсе""" + globalCourseGoalId: ID! + + """Название проекта""" + projectName: String! + + """Количество получаемого опыта (рассчитываемое)""" + experience: Int + + """Вес проекта в курсе в %""" + weight: Int +} + +"""Модель весов для всех проектов в курсе c XP""" +type CourseGoalsWeights { + """Список проектов с весами и XP""" + projectsWeights: [CourseGoalXpAndWeight!]! + + """Суммарное XP за курс за все проекты курса""" + sumXp: Int! + + """Суммарный % весов за все проекты курса""" + sumWeight: Int! +} + +"""Мета-информация по группе проектов (курс)""" +type CourseMeta { + """Идентификатор курса""" + courseId: ID! + + """Название курса""" + name: String! + + """Описание курса""" + description: String! + + """Тэги""" + tags: [String!]! + + """Предмет""" + subject: Subject! + + """Максимальный балл за прохождение курса""" + experience: Int! + + """Порог прохождения экзамена в %""" + percentageOfCompletion: Int! + + """Тип курса""" + courseType: CourseType! + + """Дата создания задания""" + createTime: DateTime! + + """Дата последнего изменения задания""" + modifyTime: DateTime + + """Пользователь, создавший задание""" + createUser: User! + + """Пользователь, который последний раз модифицировал задание""" + modifyUser: User + + """Признак заархивированности курса""" + isArchived: Boolean + + """Признак опубликованности курса""" + isPublic: Boolean + + """Набор уровней обучения, в которых находятся модули(проекты) курса""" + planStages: [Stage!]! + + """Количество проектов в курсе""" + goalCount: Int! + + """Список контент-тегов""" + contentTags: [ContentTag!]! + + """Признак наличия проектов в курсе""" + hasGoals: Boolean! + + """Признак консистентности всех проектов в курсе""" + isAllGoalsConsistent: Boolean! + + """Признак Глобальной области видимости всех проектов в курсе""" + isAllGoalsGlobalScoped: Boolean @deprecated(reason: "включен в формулу вычисления признака консистентности Курса - isConsistent, теперь его передача на фронт не требуется") + + """Признак консистентности курса""" + isConsistent: Boolean! + + """Список объектов, содержащих параметры консистентности проектов курса""" + goalConsistencyModels: [GoalConsistency!] + + """Тип формулы финальной сборки""" + attemptCountingFormula: AttemptCountingFormulaEnum + + """Признак неограниченного кол-ва попыток перепрохождения""" + isUnlimitedAttempts: Boolean + + """Количесто попыток перепрохождения""" + attemptsCount: Int +} + +"""Мета-информация по группе проектов (курс)""" +input CourseMetaInput { + """Идентификатор курса""" + courseId: ID + + """Название курса""" + name: String! + + """Описание курса""" + description: String! + + """Идентификатор предмета""" + subjectId: ID! + + """Максимальный балл за прохождение курса""" + experience: Int! + + """Порог прохождения экзамена в %""" + percentageOfCompletion: Int! + + """Тип курса""" + courseType: CourseType! + + """Список тегов""" + tags: [String!]! + + """Список контент-тегов""" + contentTags: [ContentTagInput!] + + """Тип формулы финальной сборки""" + attemptCountingFormula: AttemptCountingFormulaEnum + + """Признак неограниченного кол-ва попыток перепрохождения""" + isUnlimitedAttempts: Boolean + + """Количесто попыток перепрохождения""" + attemptsCount: Int +} + +"""""" +type CourseMutations { + """ + -----------------------------Мутации админа----------------------------- + Публикация глобального курса по его идентификатору без предварительного сохранения + """ + publishGlobalCourseById(courseId: ID!): Boolean! + + """ + Публикация локального курса по его идентификатору без предварительного сохранения + """ + publishLocalCourseById(localCourseId: ID!): Boolean! + + """Сохранение/обновление локального курса""" + saveLocalCourse(localCourse: LocalCourseInput!): LocalCourse! + + """Повторная попытка сохранения локального курса с текущей версией""" + retryLocalCourseSavingWithCurrentVersion(localCourseId: ID!): Boolean! + + """Откат локального курса до последней успешной версии""" + rollbackLocalCourseToLastSuccessVersion(localCourseId: ID!): Boolean! + + """ + -----------------------------Мутации студента----------------------------- + регистрация на курс студентом + """ + registrationForTheCourse(localCourseId: ID!): StudentCourseModel! + + """Завершить курс студентом по кнопке""" + finishCourse(localCourseId: ID!): Boolean! + + """Начать новую попытку прохождения курса""" + retryCourse(localCourseId: ID!): Boolean +} + +"""""" +type CourseQueries { + """ + -----------------------------Запросы админа----------------------------- + Получить список глобальный курсов с учетом указанных фильтров + """ + getCourses( + """Искомое имя курса""" + name: String + + """Список тегов""" + tags: [String!] + + """Параметры пагинации""" + paging: PagingInput + + """Тип курса""" + courseType: CourseType + + """Список курсов которые надо исключить из выдачи""" + filterExceptCourses: [ID] + + """Список полей сортировки""" + sortingFields: [SortingField] + ): GlobalCourseSearchResult! + + """Получить локальный курс по идентификатору глобального курса""" + getLocalCourseByGlobalCourseId( + """Идентификатор глобального курса""" + globalCourseId: ID! + + """Дата/время начала выполнения курса""" + courseStartDate: DateTime! + + """Дата/время начала регистрации на курс""" + courseStartRegisterDate: DateTime + + """Дата/время окончания регистрации на курс""" + courseEndRegisterDate: DateTime + ): LocalCourse! + + """Критериальный поиск локальных курсов""" + findLocalCoursesByCriteria( + """Критерии поиска""" + criteria: LocalCourseSearchCriteriaInput! + ): LocalCourseSearchResult! + + """Получить список классов доступных для назначения курса""" + getAvailableClassesForAssignmentToTheCourse( + """Идентификатор назначаемого глобального курса""" + courseId: ID + + """Идентификатор параллели""" + stageId: ID + + """Название искомого класса""" + className: String + ): [AvailableClassForAssignmentCourse!]! + + """Возвращает локальный курс по идентификатору""" + getLocalCourse(localCourseId: ID!): LocalCourse! + + """Проверка групповых проектов в локальном курсе (группе проектов)""" + checkGroupProjectsInLocalCourse(localCourse: LocalCourseInput!): Boolean! + + """ + Получение списка проектов и количества в них студентов, которые ещё не закончили обучение + """ + loadUnfinishedGoalsAndStudentCount( + """Идентификатор локального курса""" + localCourseId: ID! + + """Идентификаторы планов (которые входят в курс), для проверки""" + goalIds: [ID!]! + ): [GoalStudentsCount!]! + + """Валидация локального курса перед сохранением""" + validationLocalCourseBeforeSaving( + """Модель локального курса для валидации с фронта""" + localCourseInput: LocalCourseInput! + ): Boolean! + + """Получить текущий статус по процессу сохранения локального курса""" + getLocalCourseS21SavingProgress( + """Идентификатор локального курса""" + localCourseId: ID! + ): LocalCourseS21SavingProgress! + + """ + -----------------------------Запросы студента----------------------------- + Получение информации по локальному курсу в окне Projects + """ + getLocalCourseGoals(localCourseId: ID!): LocalCourseGoals! + + """Получение условий выполнения курса""" + loadCourseEvaluationRules(localCourseId: ID!): [StudentEvaluationRuleGroup!]! + + """Получить информацию по ретраям курса студента""" + getCourseRetryInfo(localCourseId: ID!): StudentGoalRetryInfo! + + """Получение статистики по попыткам прохождения курса студентом""" + getCourseAttemptStatistic(localCourseId: ID!): [StudentCourseAttemptStatistic] + + """Получение информации по обложке локального курса""" + getCourseCoverInformation(localCourseId: ID!): CourseCoverInformation! +} + +"""Тип для работы с поиском курсов""" +type CourseSearchResult { + """Количество курсов соответствующих фильтру""" + count: Int! + + """Найденные курсы""" + courses: [CourseMeta!] +} + +"""Статус группы проектов (курса)""" +enum CourseStatus { + """Студент записан на курс""" + ASSIGNED + + """Студент зарегистрировался на курс""" + REGISTERED + + """Студент зарегистрировался на курс""" + IN_PROGRESS + + """Курс сдан успешно""" + ACCEPTED + + """Курс сдан не успешно""" + FAILED +} + +"""Тип группы проектов (курса)""" +enum CourseType { + """Интенсив""" + INTENSIVE + + """Марафон""" + MARATHON + + """Модульный проект""" + MODULE_PROJECT + + """Самостоятельные проекты""" + SEPARATE_PROJECTS +} + +"""Результаты поиска проектов и курсов в глобальном поиске Ш21""" +type CoursesSearchResult { + """Общее количество найденных профилей""" + count: Int + + """Проекты с учетом пагинации""" + courses: [StudentItem]! +} + +"""Тип повтора при создании урока""" +enum CreateLessonRepeat { + """Нет повтора""" + NONE + + """Еженедельно""" + WEEKLY +} + +"""""" +input CreateTaskSetSlotRequest { + """ + идентификатор набора заданий (base_playlists.base_playlist_id или teacher_playlists.teacher_playlist_id) + """ + taskSetId: ID! + + """тип плейлиста""" + taskSetType: PlaylistType! + + """новая структура слота""" + newSlot: TaskSetSlotInput! + + """ + необязательный идентификатор студента для того, чтобы в ответ получить персональную информацию по заданиям, добавленным в слот + """ + studentIdForContext: UUID + + """ + флаг - проверять аффектит ли учебный процесс студента выполняемое изменение + """ + isNeedToCheckAffecting: Boolean! + + """флаг школы 21""" + isSchool21: Boolean +} + +"""""" +type CreateTaskSetSlotResponse { + """измененный слот""" + createdSlot: TaskSetSlot + + """ + задания в контексте студента для случая, когда плейлист изменяется в контексте студента + """ + studentTasks: [StudentTask!]! + + """успешно ли выполнение запроса (пройдены ли все проверки)""" + isSuccess: Boolean! +} + +"""""" +type Criteria { + """""" + criteriaId: ID! + + """""" + skillId: ID + + """""" + name: String! + + """""" + criteriaSetId: ID! + + """""" + isActive: Boolean +} + +"""""" +input CriteriaInput { + """""" + skillId: ID + + """""" + name: String! +} + +"""""" +enum CriteriaRecommendedValue { + """Зачтено""" + PASSED + + """Не зачтено""" + NOT_PASSED + + """Зачтено. Оценка - 3""" + PASSED_3 + + """Зачтено. Оценка - 4""" + PASSED_4 + + """Зачтено. Оценка - 5""" + PASSED_5 +} + +"""""" +type CriteriaSet { + """""" + criteriaSetId: ID! + + """""" + taskId: ID! + + """""" + criteriaThreshold: Int! + + """""" + criterias: [Criteria!]! + + """""" + isActive: Boolean +} + +"""""" +input CriteriaSetInput { + """""" + criteriaThreshold: Int! + + """""" + criterias: [CriteriaInput!]! +} + +"""""" +enum CriteriaValue { + """Не соответствует""" + MISMATCH + + """Скорее не соответствует""" + ALMOST_MISMATCH + + """Скорее соответствует""" + ALMOST_MATCHES + + """Полностью соответствует""" + MATCHES +} + +"""Критерий оценивания задания""" +type Criterion { + """Идентификатор (task_assessment_criteria.task_assessment_criteria_id)""" + criterionId: ID! + + """Название критерия""" + title: String! +} + +"""Пресет связки критерия со шкалой""" +type CriterionPreset { + """Идентификатор (xref_criteria_scales.criteria_scale_id)""" + id: ID! + + """Критерий""" + criterion: Criterion! + + """Шкала""" + scale: CriterionScale! +} + +"""Шкала оценок по критериям""" +type CriterionScale { + """Идентификатор (task_assessment_scales.task_assessment_scale_id)""" + criterionScaleId: ID! + + """Тип шкалы""" + type: CriterionScaleType! + + """Минимальное значение шкалы""" + minValue: Int + + """Максимальное значение шкалы""" + maxValue: Int + + """Шаг шкалы""" + step: Int + + """Тип""" + description: String! + + """Идентификаторы оценок""" + scaleWeights: [KeyValue!]! +} + +"""Типы шкал для оценок заданий по критериям""" +enum CriterionScaleType { + """Целочисленная шкала""" + NUMERICAL + + """Шкала, состоящая из букв латинского алфавита""" + ALPHABET_LATIN + + """Шкала, состоящая из букв кириллицы""" + ALPHABET_CYRILLIC + + """Произвольная шкала, значения оценок в которой заданы строками""" + CUSTOM + + """S21 Шкала с 2-я статусами, успешно или провалено""" + BOOLEAN + + """S21 Шкала с 5-и бальной оценкой""" + SCALE_5 +} + +"""""" +type Currency { + """Количество цифр после запятой в представлении стоимости.""" + fractionDigits: Int! + + """Код валюты по ISO-4217.""" + code: String! + + """Символ для представления валюты ($, €, ₽...)""" + symbol: String +} + +"""Текущий и доступные скоупы для изменения текущим пользователем""" +type CurrentAndAvailableScopeTypes { + """Текущий скоуп""" + scope: ScopeEnum + + """Доступные скоупы""" + available: [ScopeEnum!]! + + """""" + availablePresets: [ScopePresetEnum!]! @deprecated(reason: "Не используется в бизнес-логике") +} + +"""Данные по текущим оценкам ученика""" +type CurrentMarksData { + """имя учителя""" + teacherName: String! @deprecated(reason: "используйте userAccountOfSubjectTeacher") + + """ссылка на аватар учителя""" + teacherAvatarUrl: String! @deprecated(reason: "используйте userAccountOfSubjectTeacher") + + """Учитель по предмету""" + userAccountOfSubjectTeacher: UserAccount! + + """Список текущих оценок""" + marks: [EJournalStudentMark!]! + + """Кол-во пропущенных уроков за период""" + missedLessons: Int! + + """Общее кол-во уроков за период""" + lessonsNumber: Int! +} + +"""Модель запроса текущих оценок""" +input CurrentMarksRequest { + """Идентификатор пользователя ребенка""" + childUserId: ID + + """Идентификатор предмета параллели""" + stageSubjectId: ID! + + """Идентификатор АП""" + periodId: ID! + + """Идентификатор типа АП""" + periodTypeId: ID! +} + +"""Ответ на запрос текущих оценок""" +type CurrentMarksResponse { + """Данные""" + data: CurrentMarksData + + """Успешность операции""" + isSuccess: Boolean! + + """Ошибки""" + error: FinalMarksError +} + +""" +Тип содержит информацию о текущем модуле из планна на класс и его системе заданий +""" +type CurrentModuleInfo { + """Идентификатор учебного модуля""" + moduleId: ID! + + """Название учебного модуля""" + moduleTitle: String! + + """Идентификатор системы заданий из плана на класс""" + taskSetId: ID! + + """Тип системы заданий""" + playlistType: PlaylistType! + + """Дата начала изучения модуля в плане на класс""" + startDate: DateTime! + + """Дата достижения учебного модуля в плане на класс""" + endDate: DateTime! + + """ + Общее Количество заданий, которое должно быть выполнено учениками в рамках модуля + """ + totalTaskCount: Int! +} + +""" +Тип содержит информацию о текущем модуле и статистику работы учеников с ним +""" +type CurrentModulePerformance { + """Текщий учебный модуль из плана класса по предмету""" + currentModule: CurrentModuleInfo + + """Статистика работы учеников с текущим модулем""" + taskStatusesWithQuantities: [TaskStatusWithQuantity!]! +} + +""" +Тип содержит информацию о количестве учеников в группах успеваемости в текущем учебном периоде +""" +type CurrentPeriodPerformance { + """Количество отличников""" + excellentCount: Int! + + """Количество хорошистов""" + goodCount: Int! + + """Количество отстающих""" + fallingBehindCount: Int! + + """Количество учеников без оценок""" + notRatedCount: Int! +} + +"""""" +type CurrentProgress { + """id ученика""" + studentId: UUID! + + """идентификатор большого вызова""" + bigChallengeId: ID! + + """Прогресс по категориям школьных предметов (суммарно)""" + subjectCategoryProgress: Int! + + """Прогресс по учусь учиться (суммарно)""" + llTaskProgress: Int! + + """Прогресс по добавленным достижениям в профиль (суммарно)""" + achievementProgress: Int! + + """Прогресс по квестам в метавселенной (суммарно)""" + questProgress: Int! +} + +"""Информация о заявке на расформирование команды""" +type CurrentTeamDisbandRequestInfo { + """Идентификатор заявки на расформирование команды""" + teamDisbandRequestId: ID + + """Дата регистрации заявки""" + teamDisbandRequestDate: DateTime + + """Флаг отмечающий просроченные заявки""" + isExpiredRequest: Boolean + + """Количество часов, которое заявка находится на рассмотрении""" + hoursToConsider: Int + + """Название параллели, с которой пришла заявка""" + parallelName: String + + """Название проекта""" + projectName: String + + """Информация о размере команды""" + teamSizeInfo: TeamSizeInfo + + """Информация о проводимом голосовании для расформирования команды""" + disbandmentTeamVotingInfo: DisbandmentTeamVotingInfo + + """Флаг отмечающий новые заявки на расформирование команды""" + isNewRequest: Boolean +} + +"""Информация о студенте за рабочей станцией с указанием места размещения""" +type CurrentWorkstationUser { + """Студент прошедший аутентификацию за рабочей станцией""" + user: User! + + """Идентификатор текущего уровня""" + experienceLevelId: Int! @deprecated(reason: "use experience. Will be deleted in 29.0") + + """Опыт пользователя""" + experience: UserExperience! + + """Название параллели""" + stageName: String! + + """Название класса""" + stageGroupName: String! + + """Ряд""" + row: String! + + """Номер места""" + number: Int! + + """Платформа студента""" + studentType: StudentPlatformType! +} + +"""""" +type Customer { + """""" + id: UUID! + + """""" + name: String! +} + +"""информация о посещаемости за день""" +type DailyTraffic { + """Дата, день когда была активность.""" + date: Date! + + """Время посещения в кампусе (в секундах)""" + periodOnCampus: String! + + """Время авторизации за рабочей станцией в кампусе (в секундах)""" + periodAuthorizIMac: String! + + """Время авторизации в ШЦП (в секундах)""" + periodAuthorizSDP: String! +} + +"""модель элемента плана для dashboard""" +type DashboardPlanItem { + """id в плане""" + globalPlanModuleId: Int + + """id проекта""" + goalId: Int + + """id курса""" + globalCourseId: Int + + """название модуля""" + name: String! + + """тип курса""" + courseType: CourseType + + """тип проекта""" + goalExecutionType: ModuleExecutionType + + """формула вычисления""" + attemptCountingFormula: AttemptCountingFormulaEnum + + """количество попыток выполнения""" + attemptsNumber: Int + + """длительность""" + laboriousness: Int + + """xp""" + pointTask: Int + + """Bonus xp""" + bonusXP: Int + + """процент выполнения""" + percentageOfCompletion: Int + + """тип формулы подсчета итогового балла""" + countingFormulaType: CountingFormulaType + + """p2p проверка""" + isP2P: Boolean + + """Автотест""" + isAutotest: Boolean + + """Кодревью""" + isCodeReview: Boolean + + """количество процентов за лидерство""" + percentageForLeadership: Int + + """cicd""" + isCiCd: Boolean + + """порядок""" + order: Int + + """Локализованное название типа проекта/курса""" + localizedType: String + + """если это курс, проекты внутри курса""" + dashboardPlanItemModelList: [DashboardPlanItem]! +} + +"""модель плана для dashboard""" +type DashboardPlanModules { + """модули плана""" + dashboardPlanItemModels: [DashboardPlanItem]! + + """количество записей""" + count: Int +} + +"""Активность пользователей за периоды""" +type DashboardUsersActivity { + """""" + period: String! + + """""" + activeUsersCount: Int! @deprecated + + """""" + activeUsersCountNullable: Int +} + +"""""" +scalar Date + +"""Интервал дат""" +type DateInterval { + """""" + intervalCode: Int + + """""" + startDate: Date! + + """""" + endDate: Date! +} + +"""Интервал дат для сохранения""" +input DateIntervalInput { + """""" + intervalCode: Int! + + """""" + startDate: Date! + + """""" + endDate: Date! +} + +"""Отчетные периоды""" +type DateIntervals { + """""" + dateIntervals: [DateInterval!]! +} + +"""""" +scalar DateTime + +"""Дедлайн для Ш21""" +type Deadline { + """Идентификатор дедлайна""" + deadlineId: ID! + + """Идентификатор родительского дедлайна""" + deadlineParentId: ID + + """Название дедлайна""" + description: String! + + """Время в днях до дедлайна""" + deadlineToDays: Int! @deprecated + + """Время в днях до дедлайна""" + deadlineToDaysArray: [Int]! + + """Время наступления дедлайна""" + deadlineTs: DateTime! + + """Тип дедлайна персональный или массовый""" + isPersonal: Boolean! + + """Комментарий к дедлайну""" + comment: String + + """Дата создания""" + createTs: DateTime! + + """Статус дедлайна""" + status: DeadlineStatus! + + """Отсрочка""" + shift: String! + + """Дата последнего изменения""" + updateTs: DateTime + + """Классы дедлайна (для массового)""" + stageGroups: [StageGroup] + + """Набор правил для конструктора целей дедлайна""" + rules: [EvaluationRuleGroup]! +} + +"""Конфигурация для игры в "Дедлайн" в рамках школы""" +type DeadlineGameConfiguration { + """""" + id: ID! + + """Максимальное кол-во печенек за одну игру""" + maxCookieCountPerGame: Int! + + """Кол-во часов, через которое можно снова получить печеньку за игру""" + cookieCoolDown: Int! +} + +""" +Уровень в игре "Дедлайн" +""" +type DeadlineGameLevel { + """Id уровня, соответствующий числовому представлению""" + id: ID! + + """Наименование уровня""" + name: String! + + """Значения констант для уровня""" + range: DeadlineGameLevelRange! +} + +"""""" +input DeadlineGameLevelInput { + """""" + name: String! + + """""" + attributes: String! +} + +""" +Диапазон значений констант для уровня в игре "Дедлайн" +""" +type DeadlineGameLevelRange { + """ID диапазона""" + id: ID! + + """Уровень""" + level: Int! + + """Константы для игры в виде JSON. Используется только на фронте""" + attributes: String! +} + +"""""" +type DeadlineGameResult { + """""" + id: ID! + + """Общее время в игре hh:mm:ss""" + durationTime: Time! + + """Достигнутый уровень""" + levelId: Int! + + """Кол-во заработанных баллов""" + pointCount: Int! + + """Кол-во заработанных печенек""" + cookieCount: Int! + + """Дата и время игры""" + gameDateTime: DateTime! +} + +"""""" +input DeadlineGameResultInput { + """Общее время в игре, вида hh:mm:ss""" + durationTime: String! + + """Достигнутый уровень""" + levelId: Int! + + """Кол-во заработанных баллов""" + pointCount: Int! + + """Кол-во заработанных печенек""" + cookieCount: Int! +} + +"""Необходимые цели дедлайна Ш21""" +type DeadlineGoal { + """Проекты для завершения""" + projects: [StudentModule] @deprecated(reason: "use goalProjects") + + """Инфо о целевых проектах студента""" + goalProjects: [StudentProjectInfo] + + """Инфо о целевых группах проектов студента""" + goalCourses: [CourseCoverInformation] + + """Уровни, которые необходимо достичь""" + levels: [ExperienceLevelRange] +} + +"""Инпут дедлайна Ш21 deprecated (использовать DeadlineS21Input)""" +input DeadlineInput { + """Идентификатор родительского дедлайна""" + deadlineParentId: UUID + + """Название дедлайна""" + description: String! + + """Время в днях до дедлайна""" + deadlineToDays: Int! + + """Время наступления дедлайна""" + deadlineTs: DateTime! + + """Тип дедлайна персональный или массовый""" + isPersonal: Boolean! + + """Комментарий к дедлайну""" + comment: String + + """Классы""" + stageGroups: [ID] + + """Идентификатор студента (для персонального дедлайна)""" + studentId: UUID +} + +"""Инпут дедлайна Ш21""" +input DeadlineS21Input { + """Идентификатор родительского дедлайна""" + deadlineParentId: UUID + + """Название дедлайна""" + description: String! + + """Время в днях до дедлайна""" + deadlineToDaysArray: [Int]! + + """Время наступления дедлайна""" + deadlineTs: DateTime! + + """Тип дедлайна персональный или массовый""" + isPersonal: Boolean! + + """Комментарий к дедлайну""" + comment: String + + """Классы""" + stageGroups: [ID] + + """Идентификатор студента (для персонального дедлайна)""" + studentId: UUID +} + +"""Запрос на отсрочку Дедлайна для Ш21""" +type DeadlineShiftRequest { + """Идентификатор запроса на сдвиг дедлайна""" + deadlineShiftRequestId: UUID! + + """Идентификатор дедлайна для сдвига""" + deadlineId: UUID! + + """Дата сдвигаемого дедлайна""" + deadlineTs: DateTime! + + """Логин студента""" + userLogin: String! + + """Идентификатор студента""" + studentId: UUID! + + """Идентификатор пользователя""" + userId: UUID! + + """Комментарий студента""" + comment: String + + """Статус запроса""" + status: DeadlineShiftRequestStatus! + + """Время создания""" + createTs: DateTime! + + """Количество дней для сдвига""" + daysToShift: Int! +} + +"""Запрос на отсрочку с привязанным дедлайном""" +type DeadlineShiftRequestInfo { + """Запрос на отсрочку""" + shiftRequest: DeadlineShiftRequest! + + """Дедлайн""" + deadline: Deadline! +} + +"""Запрос на сдвиг дедлайна""" +input DeadlineShiftRequestInput { + """Идентификатор запрашиваемого дедлайна на сдвиг""" + deadlineId: UUID! + + """Комментарий студента о причинах отсрочки""" + comment: String! +} + +"""Статус запроса на отсрочку дедлайна""" +enum DeadlineShiftRequestStatus { + """Новый""" + TO_SHIFT + + """Удаленный""" + CANCELLED + + """Перенесенный""" + SHIFTED +} + +"""Статус дедлайна""" +enum DeadlineStatus { + """Новый""" + OPEN + + """Удаленный""" + CANCELLED + + """Закрытый (выполненный)""" + CLOSED + + """Перенесенный""" + SHIFTED + + """Просроченный""" + OVERDUE +} + +"""Инфо о дедлане для студента Ш21""" +type DeadlineStudentInfo { + """Дедлайн""" + deadline: Deadline! + + """Цель дедлайна""" + deadlineGoal: DeadlineGoal + + """Количество отсрочек по дедлайну""" + shiftCount: Int! + + """Запросы на отсрочку по дедлайну""" + shiftRequests: [DeadlineShiftRequest]! + + """Идентификатор студента""" + studentId: UUID! + + """Логин студента""" + studentLogin: String + + """Пользователь студента""" + studentUser: User! +} + +"""""" +type DeckWidgetNotification { + """""" + notification: Notification! + + """""" + subjectId: ID + + """""" + subjectName: String + + """""" + goalId: ID + + """""" + goalName: String + + """""" + studyPeriodId: ID + + """""" + studyPeriodStartDate: String + + """""" + studyPeriodEndDate: String + + """""" + personalTrajectoryPresent: Boolean + + """""" + motivationBlockPresent: Boolean + + """""" + achievedGoalLevel: String + + """""" + targetGoalLevel: String + + """""" + taskId: String + + """""" + taskStatusId: ID + + """""" + wasSentToReviewer: Boolean + + """""" + userFromFirstName: String + + """""" + userFromLastName: String + + """""" + controlWorkPlanTime: String + + """""" + moduleEndTime: String + + """""" + studyPeriodName: String + + """""" + governmentMarkValue: String + + """""" + academicYearName: String +} + +"""""" +type DeclineReason { + """""" + id: UUID! + + """""" + declineType: DeclineType! + + """""" + description: String! +} + +"""Тип причины отклонения заявки на участие в проекте акселератора""" +enum DeclineType { + """""" + RECALL + + """""" + REJECT +} + +"""Расшифровка вида контента""" +type DecodedContent { + """для кэша""" + id: ID! + + """вид контента""" + kind: ContentKind! + + """код PK в базе (в зависимости от вида контента)""" + contentId: ID! +} + +"""""" +type DefaultResponse { + """""" + status: String! + + """""" + responseTime: DateTime! +} + +"""""" +type DeleteGitlabProjectsResponse { + """""" + success: Boolean! +} + +"""Уровень сложности задания""" +enum DifficultyLevelEnum { + """""" + SIMPLE + + """""" + DIFFICULT +} + +"""Результат верификации направления программы""" +type DirectionValidation { + """Список ошибок валидации""" + errors: [String!]! + + """Сообщение""" + info: String +} + +"""Идентификатор статуса заявки на расформирование команды""" +enum DisbandRequestStatus { + """Заявка подана""" + SUBMIT + + """Расформирована автоматически""" + DISBANDED_AUTO + + """На рассмотрении модератором""" + CONSIDERATION_MODERATOR + + """Расформирована модератором""" + DISBANDED_MODERATOR + + """Отклонена модератором""" + REJECTED_MODERATOR +} + +"""Информация о проводимом голосовании для расформирования команды""" +type DisbandmentTeamVotingInfo { + """Количество отправленных запросов на расформирование команды""" + numberOfRequestsSent: Int + + """Количество участников команды""" + numberOfTeamMembers: Int + + """Процент голосования""" + percentageOfVoting: Int +} + +""" +Расширенный перечень статусов курсов(групп проектов). Вычисляется по запросу и не сохраняется в БД. +""" +enum DisplayedCourseStatus { + """Курс недоступн""" + UNAVAILABLE + + """Курс провален""" + FAILED + + """Курс выполне""" + COMPLETED + + """Регистрация временно недоступна""" + REGISTRATION_IS_NOT_AVAILABLE_YET + + """Регистрация открыта""" + REGISTRATION_IS_OPEN + + """Ожидает начала выполнения""" + WAITING_FOR_START + + """Готов к выполнению""" + READY_TO_START + + """В процессе выполнения""" + IN_PROGRESS +} + +""" +Расширенный перечень статусов целей, используемый только для frontend. Вычисляется по запросу и не сохраняется в БД. +""" +enum DisplayedGoalStatus { + """Цель недоступна""" + UNAVAILABLE + + """Цель провалена""" + FAILED + + """Цель выполнена""" + COMPLETED + + """Регистрация временно недоступна""" + REGISTRATION_IS_NOT_AVAILABLE_YET + + """Регистрация открыта""" + REGISTRATION_IS_OPEN + + """Ожидает начала выполнения""" + WAITING_FOR_START + + """Готов к выполнению""" + READY_TO_START + + """В процессе выполнения""" + IN_PROGRESS + + """Ожидает оценки""" + WAITING_FOR_EVALUATIONS + + """Оценивается P2P""" + P2P_EVALUATIONS + + """Оценивается автоматически""" + AUTO_EVALUATIONS + + """Ожидает проверку код ревью""" + WAIT_FOR_CODE_REVIEW + + """Ожидает проверку код ревью round1""" + WAIT_FOR_CODE_REVIEW_ROUND1 + + """в процессе код ревью round1""" + CODE_REVIEW_ROUND1 + + """Ожидает проверку код ревью round2""" + WAIT_FOR_CODE_REVIEW_ROUND2 + + """в процессе код ревью round2""" + CODE_REVIEW_ROUND2 +} + +"""Черновик""" +type Draft { + """Содержимое черновика""" + content: String! + + """Время последнего редактирования""" + ts: DateTime! + + """ID задания или модуля к которому привязан черновик""" + entityId: String! + + """Тип черновика""" + type: DraftTypeEnum! +} + +"""""" +type DraftQueries { + """ + Получить черновик ребенка-ученика + Если черновика нет, возвращается null + """ + getChildDraft( + """Идентификатор пользователя ребенка-ученика""" + childUserId: UUID! + + """Тип черновика""" + draftType: DraftTypeEnum! + + """ + ID сущности, к которой привязан черновик + Пример сущности: задание, модуль + """ + entityId: String! + ): Draft + + """ + Получить черновик ученика + Если черновика нет, возвращается null + """ + getStudentDraft( + """Идентификатор пользователя ученика""" + studentUserId: UUID! + + """Тип черновика""" + draftType: DraftTypeEnum! + + """ + ID сущности, к которой привязан черновик + Пример сущности: задание, модуль + """ + entityId: String! + ): Draft +} + +"""Типы черновиков""" +enum DraftTypeEnum { + """Ответ на задание""" + TASK_ANSWER + + """Содержимое задания""" + TASK_CONTENT + + """Отзыв о задании""" + TASK_FEEDBACK + + """Жалоба на задание""" + TASK_COMPLAINT + + """Комментарий к заданию""" + TASK_COMMENT + + """Комментарий к задания, приложеные файлы""" + TASK_COMMENT_CONTENT + + """Содержание модуля""" + GOAL_CONTENT + + """Жалоба на модуль""" + GOAL_COMPLAINT + + """Персональный план""" + PERSONAL_PLAN + + """Профиль пользователя""" + USER_PROFILE + + """Мотивационный блок""" + MOTIVATION_BLOCK + + """Обобщенное состояние модуля в контексте пользователя""" + MODULE_STATE +} + +"""Модель комментария в дневнике""" +type EDiaryComment { + """Текст комментария""" + comment: String! + + """Пользователь, последний внесший изменения в комментарий""" + user: User! + + """Признак роли учителя гкпп""" + isStageSubjectGroupTeacher: Boolean! +} + +"""Модель данных дневника""" +type EDiaryData { + """Данные уроков по дням""" + lessonsByDate: [EDiaryLessonsByDate!]! +} + +"""Модель ответа данных дневника""" +type EDiaryDataResponse { + """Данные""" + data: EDiaryData + + """Успешность операции""" + isSuccess: Boolean! + + """Ошибки ЭД""" + error: EDiaryError +} + +"""Модель ошибки ЭД""" +type EDiaryError { + """Код ошибки""" + errorCode: EDiaryErrorCode! +} + +"""Коды ошибок ЭД""" +enum EDiaryErrorCode { + """Нет уроков в выбранном периоде""" + NO_LESSONS_FOUND +} + +"""Модель данных урока в дневнике""" +type EDiaryLessonData { + """Идентификатор урока""" + lessonId: ID! + + """Название предмета урока""" + subjectName: String! + + """Время начала урока""" + lessonStartTime: Time! + + """Время окончания урока""" + lessonEndTime: Time! + + """Оценки, полученные учеником на уроке""" + marks: [EDiaryMark!] + + """Номер кабинета, где проходит урок""" + classRoomName: String! + + """URL для подключения к дистанционному уроку""" + linkOnlineLesson: String + + """ + Признак того, что в КТП на данный урок запланирована контрольная работа + """ + isControlWork: Boolean! + + """Комментарий к уроку""" + lessonComment: EDiaryComment + + """Комментарий к уроку для ученика""" + studentComment: EDiaryComment + + """Статус посещаемости ученика для урока""" + studentVisitStatus: StudentVisitStatus + + """Время опоздания в минутах""" + lateTime: Int + + """Количество заметок ученику, являющихся ДЗ к данному уроку""" + homeworkNotesNumber: Int! + + """Количество заданий и материалов, являющихся ДЗ к данному уроку""" + homeworkTaskAndMaterialNumber: Int! +} + +"""Модель данных дня в дневнике""" +type EDiaryLessonsByDate { + """Дата""" + date: Date! + + """Признак каникул""" + isHoliday: Boolean! + + """Уроки на дату""" + lessons: [EDiaryLessonData!]! +} + +"""Модель оценки в дневнике""" +type EDiaryMark { + """Название оценки""" + markCustomName: String! + + """Вес оценки""" + weight: Int! + + """Название формы контроля, за которую выставлена оценка""" + formControlName: String! + + """Отложенная дата выставления оценки""" + temporaryMarkDate: Date + + """Комментарий к оценке""" + comment: EDiaryComment + + """ + Признак того, что форма контроля, за которую выставлена оценка, имеет тип контрольная + """ + isControlWork: Boolean! + + """Пользователь, который поставил оценку""" + createdUser: User! + + """Признак роли учителя гкпп""" + isStageSubjectGroupTeacher: Boolean! +} + +"""Период""" +enum EDiaryPeriod { + """День""" + DAY + + """Неделя""" + WEEK +} + +"""""" +type EDiaryQueries { + """Запрос данных электронного дневника""" + getEDiaryData(eDiaryRequestInput: EDiaryRequestInput!): EDiaryDataResponse! + + """Запрос списка академических годов школы""" + getAcademicYears: [AcademicYear!]! +} + +"""Входная модель запроса данных дневника""" +input EDiaryRequestInput { + """Дата с которой необходимо получить данные дневника""" + dateFrom: Date! + + """Период за который необходимо получить данные дневника (день, неделя)""" + period: EDiaryPeriod! + + """ + Идентификатор пользователя ребенка (в случае запроса дневника родителем) + """ + childUserId: UUID +} + +""" +Объект, содержащий фильтры для поиска ГКпП, к ЭЖ которых у вызывающего пользователя есть доступ +""" +input EJournalAvailableEJournalsFilterInput { + """ + Фильтр идентификаторов предметов, по которым происходит обучение в ГКпП + """ + stageSubjectGroupSubjectIds: [ID!] + + """Фильтр идентификаторов классов, к которым относятся ГКпП""" + stageGroupIds: [ID!] + + """ + Фильтр, ограничивающий выборку только ГКпП тех классов, где вызывающий + пользователь имеет следующее отношение к роли классного руководителя: + true - является классным руководителем + false - не является классным руководителем + null - без разницы + """ + userStageGroupFormMaster: Boolean + + """Фильтр академического года, в котором заведены ГКпП""" + academicYearId: ID +} + +"""Модель средневзвешенной оценки ученика для ЭЖ""" +type EJournalAverageWeightedStudentMark { + """Идентификатор ученика, для которого рассчитана оценка""" + studentId: ID! + + """Идентификатор периода, за который рассчитана оценка""" + finalPeriodId: ID! + + """Тип периода, за который рассчитана оценка""" + finalPeriodType: FinalPeriodType! + + """Значение средневзвешенной оценки (СРВ)""" + markValue: String! +} + +""" +Модель, содержащая информацию для ячейки таблицы Электронного журнала (ЭЖ) +Ячейка - пересечение ученика и урока в таблице +""" +type EJournalCell { + """Идентификатор ученика, к которому относится ячейка ЭЖ""" + studentId: ID! + + """Идентификатор урока, к которому относится ячейка ЭЖ""" + lessonId: ID! + + """ + Признак того, числился ли ученик в ГКпП во время урока + ГКпП - та группа, относительно которой агрегируем ЭЖ + """ + wasInGroup: Boolean! + + """Информация о посещении урока #lessonId учеником #studentId""" + studentLessonVisitInfo: EJournalStudentVisit + + """ + Список оставленных комментариев к уроку #lessonId для ученика #studentId + """ + studentLessonComments: [EJournalStudentLessonComment!] + + """Список оценок ученика #studentId за урок #lessonId""" + studentLessonMarks: [EJournalStudentMark!]! +} + +""" +Список аттестационных периодов, по которым происходит аттестация в ГКпП +""" +type EJournalConfiguredFinalPeriodsForStageSubjectGroup { + """Идентификатор ГКпП""" + stageSubjectGroupId: ID! + + """Идентификатор учебного года""" + academicYearId: Int! + + """ + Список аттестационных периодов, по которым происходит аттестация в ГКпП #stageSubjectGroupId + """ + finalPeriods: [EJournalFinalPeriod!]! +} + +""" +Модель ответа на запрос периодов, по которым происходит аттестация в переданной ГКпП +""" +type EJournalConfiguredFinalPeriodsForStageSubjectGroupResponse { + """Тело ответа""" + data: EJournalConfiguredFinalPeriodsForStageSubjectGroup + + """Признак успешности выполнения запроса""" + isSuccess: Boolean! + + """Описание ошибки, возникшей в ходе выполнения запроса""" + error: EJournalError +} + +"""Список сконфигурированных типов итоговых оценок для ГКпП""" +type EJournalConfiguredFinalStudentMarkTypesForStageSubjectGroup { + """Идентификатор ГКпП""" + stageSubjectGroupId: ID! + + """Сконфигурированные для ГКпП типы итоговых оценок""" + configuredFinalStudentMarkTypes: [EJournalFinalStudentMarkType!]! +} + +""" +Модель ответа на запрос типов итоговых отметок, сконфигурированных для ГКпП +""" +type EJournalConfiguredFinalStudentMarkTypesForStageSubjectGroupResponse { + """Тело ответа""" + data: EJournalConfiguredFinalStudentMarkTypesForStageSubjectGroup + + """Признак успешности выполнения запроса""" + isSuccess: Boolean! + + """Описание ошибки, возникшей в ходе выполнения запроса""" + error: EJournalError +} + +"""Модель систем оценивания, сконфигурированных для ГКпП""" +type EJournalConfiguredGovernmentMarkTypesForStageSubjectGroup { + """Идентификатор ГКпП""" + stageSubjectGroupId: ID! + + """Сконфигурированные для ГКпП #stageSubjectGroupId системы оценивания""" + configuredGovernmentMarkTypes: [EJournalGovernmentMarkType!]! +} + +"""Модель ответа на запрос сконфигурированных систем оценивания для ГКпП""" +type EJournalConfiguredGovernmentMarkTypesForStageSubjectGroupResponse { + """Тело ответа""" + data: EJournalConfiguredGovernmentMarkTypesForStageSubjectGroup + + """Признак успешности выполнения запроса""" + isSuccess: Boolean! + + """Описание ошибки, возникшей в ходе выполнения запроса""" + error: EJournalError +} + +"""Модель форм контроля, сконфигурированных для ГКпП""" +type EJournalConfiguredLearningActivitiesForStageSubjectGroup { + """Идентификатор ГКпП""" + stageSubjectGroupId: ID! + + """Список форм контроля, сконфигурированных для ГКпП""" + configuredLearningActivities: [LearningActivity!]! +} + +"""Модель ответа на запрос сконфигурированных форм контроля для ГКпП""" +type EJournalConfiguredLearningActivitiesForStageSubjectGroupResponse { + """Тело ответа""" + data: EJournalConfiguredLearningActivitiesForStageSubjectGroup + + """Признак успешности выполнения запроса""" + isSuccess: Boolean! + + """Описание ошибки, возникшей в ходе выполнения запроса""" + error: EJournalError +} + +"""""" +input EJournalCreateFinalStudentMarkInput { + """Идентификатор предмета параллели по которому выставлена оценка""" + stageSubjectId: ID! + + """Идентификатор ученика, которому поставлена оценка""" + studentId: ID! + + """Идентификатор типа периода, за который выставлена итоговая оценка""" + finalPeriodType: FinalPeriodType! + + """Идентификатор периода, за который выставлена итоговая оценка""" + finalPeriodId: ID! + + """Идентификатор типа итоговой оценки""" + finalStudentMarkType: FinalStudentMarkType! + + """Идентификатор оценки""" + markId: ID! + + """Комментарий к оценке""" + comment: String +} + +"""""" +input EJournalCreateLessonCommentInput { + """""" + lessonId: ID! + + """""" + comment: String! +} + +"""""" +input EJournalCreateStudentLessonCommentInput { + """""" + lessonId: ID! + + """""" + studentId: ID! + + """""" + comment: String! +} + +"""""" +input EJournalCreateStudentMarkInput { + """Идентификатор ученика, которому проставлена оценка""" + studentId: ID! + + """Идентификатор урока, за который проставлена оценка""" + lessonId: ID! + + """Идентификатор формы контроля, за которую проставлена оценка""" + learningActivityId: ID! + + """ + Идентификатор настройки формы контроля для предмета и уровня образования из которой были извлечены атрибуты оценки + """ + studyStepSubjectLearningActivityId: ID + + """Идентификатор типа формы контроля""" + formControlType: FormControlTypeEnum! + + """Идентификатор выставленной оценки""" + markId: ID! + + """ + Отложенная дата выставления оценки. В случае выставления временной оценки, указывается дата, когда оценка будет считаться проставленной в журнал + """ + temporaryMarkDate: Date + + """Вес оценки на момент выставления""" + weight: Int! + + """Комментарий к оценке""" + comment: String +} + +"""""" +input EJournalCreateStudentVisitInput { + """""" + lessonId: ID! + + """""" + studentId: ID! + + """""" + studentVisitStatus: StudentVisitStatus! + + """""" + lateTime: Int + + """""" + comment: String +} + +"""Модель, агрегирующая информацию таблицы ЭЖ""" +type EJournalData { + """ + Список уроков за аттестационный период, в рамках которого агрегируем информацию + """ + lessons: [EJournalLesson!] + + """Учебный план ГКпП, информацию для ЭЖ которой запросили""" + stageSubjectGroupPlan: ClassPlan + + """Список учеников, найденных в соответствии с фильтрами запроса""" + students: [EJournalStudent!] + + """Информация для ячеек ЭЖ""" + journalCells: [EJournalCell!] +} + +"""Модель ответа на запрос информации по журнальной сетке ЭЖ для ГКпП""" +type EJournalDataResponse { + """Тело ответа""" + data: EJournalData + + """Признак успешности выполнения запроса""" + isSuccess: Boolean! + + """Описание ошибки, возникшей в ходе выполнения запроса""" + error: EJournalError +} + +"""""" +type EJournalDeleteOperationResponse { + """""" + data: Boolean + + """""" + isSuccess: Boolean! + + """""" + error: EJournalError +} + +"""Модель ошибки ЭЖ""" +type EJournalError { + """Код ошибки""" + errorCode: EJournalErrorCode! +} + +"""Коды ошибок ЭЖ""" +enum EJournalErrorCode { + """Нет учеников в ГКпП""" + NO_STUDENTS_FOUND + + """Не найдено учеников в ГКпП в соответствии с заданными фильтрами""" + NO_STUDENTS_FOUND_BY_FILTER + + """Количество найденных учеников в ГКпП превышает установленный лимит""" + STUDENTS_COUNT_LIMIT_EXCEEDED + + """Нет уроков в выбранном учебном периоде""" + NO_LESSONS_FOUND_IN_STUDY_PERIOD + + """Не найдены учебные периоды для ГКпП""" + NO_STUDY_PERIODS_FOUND + + """У пользователя нет доступа к электронному журналу ГКпП""" + USER_HAS_NO_ACCESS_TO_JOURNAL + + """ + У пользователя нет прав на редактирование комментариев в журнале данной ГКПП + """ + USER_HAS_NO_ACCESS_TO_EDIT_STUDENT_COMMENTS + + """ + У пользователя нет прав на редактирование комментариев в журнале данной ГКПП + """ + USER_HAS_NO_ACCESS_TO_EDIT_LESSON_COMMENTS + + """ + У пользователя нет прав на редактирование статусов посещаемости уроков студентом в журнале данной ГКПП + """ + USER_HAS_NO_ACCESS_TO_EDIT_STUDENT_ATTENDANCE + + """У пользователя нет прав на редактирование текущих оценок в данной ГКПП""" + USER_HAS_NO_ACCESS_TO_EDIT_STUDENT_MARKS + + """ + У пользователя нет прав на редактирование итоговых оценок в данной ГКПП + """ + USER_HAS_NO_ACCESS_TO_EDIT_FINAL_STUDENT_MARKS + + """ + У пользователя нет прав на редактирование оценок в прошедших периодах или + уроках старше чем указано в конфигурации edu.service.e-journal.editing-available-days" + """ + USER_HAS_NO_ACCESS_TO_EDIT_STUDENT_MARKS_IN_ENDED_PERIODS_OR_LESSONS_OLDER_THAN_SPECIFIED + + """ + У пользователя нет прав на редактирование посещаемости в прошедших периодах или + уроках старше чем указано в конфигурации edu.service.e-journal.editing-available-days" + """ + USER_HAS_NO_ACCESS_TO_EDIT_STUDENT_VISISTS_IN_ENDED_PERIODS_OR_LESSONS_OLDER_THAN_SPECIFIED + + """ + У пользователя нет прав на редактирование посещаемости в прошедших периодах + """ + USER_HAS_NO_ACCESS_TO_EDIT_FINAL_STUDENT_MARKS_IN_ENDED_PERIODS + + """Для данного урока и студента уже есть комментарий учителя к уроку""" + STUDENT_COMMENT_ALREADY_EXISTS + + """Для данного урока уже есть комментарий""" + LESSON_COMMENT_ALREADY_EXISTS + + """Для данного урока и студента уже есть статус посещаемости""" + STUDENT_VISIT_ALREADY_EXISTS + + """За данный период у студента уже есть оценка такого типа""" + STUDENT_FINAL_MARK_ALREADY_EXISTS + + """Не найдена ГКпП""" + STAGE_SUBJECT_GROUP_NOT_FOUND + + """Статус посещения урока студентом не найден""" + JOURNAL_STUDENT_VISIT_NOT_FOUND + + """Оценка студента за урок не найдена""" + JOURNAL_STUDENT_MARK_NOT_FOUND + + """Итоговая оценка студента не найдена""" + JOURNAL_FINAL_STUDENT_MARK_NOT_FOUND + + """Комментарий учителя к уроку в журнале для ученика не найден""" + JOURNAL_STUDENT_LESSON_COMMENT_NOT_FOUND + + """Комментарий учителя к уроку в журнале не найден""" + JOURNAL_LESSON_COMMENT_NOT_FOUND + + """ + Для опоздавшего студента не указано время опоздания, либо значение отрицательное + """ + STUDENT_VISIT_STATUS_IS_ABSENT_BUT_LATE_TIME_IS_NULL_OR_NEGATIVE + + """ + Нельзя сбросить дату отложенной оценки т.к. она совпадает с настоящей датой или находиться в прошлом + """ + TOO_LATE_TO_RESET_TEMPORARY_MARK_DATE + + """Дата отложенной оценки должна быть в будущем""" + TEMPORARY_MARK_DATE_NOT_IN_FUTURE + + """Нельзя менять значение оценки, если она не является отложенной""" + CANNOT_CHANGE_NOT_TEMPORARY_MARK +} + +""" +Модель аттестационного периода, за который ученикам ставят итоговые отметки +""" +type EJournalFinalPeriod { + """Идентификатор аттестационного периода""" + periodId: ID! + + """Наименование периода""" + periodName: String! + + """Дата начала периода (включительно)""" + periodStartDate: Date! + + """Дата окончания периода (включительно)""" + periodEndDate: Date! + + """Тип периода""" + periodType: EJournalFinalPeriodType! + + """ + Порядок периода в группе. + Если передается одиночный период, можно игнорировать (0) + """ + periodOrderInGroup: Int! +} + +"""Модель типа периода, за который ученикам выставляются итоговые оценки""" +type EJournalFinalPeriodType { + """Идентификатор типа периода""" + id: ID! + + """Код типа периода""" + periodTypeCode: FinalPeriodType! +} + +"""Модель итоговой оценки ученика в Электронном журнале""" +type EJournalFinalStudentMark { + """Первичный ключ итоговой оценки""" + finalStudentMarkId: ID! + + """Идентификатор предмета параллели по которому выставлена оценка""" + stageSubjectId: ID! + + """Идентификатор ученика, которому поставлена оценка""" + studentId: ID! + + """Идентификатор типа периода, за который выставлена итоговая оценка""" + finalPeriodType: FinalPeriodType! + + """Идентификатор периода, за который выставлена итоговая оценка""" + finalPeriodId: ID! + + """Идентификатор типа итоговой оценки""" + finalStudentMarkType: FinalStudentMarkType! + + """Идентификатор оценки""" + markId: ID! + + """Значение оценки в баллах в момент выставления""" + initialValue: Int + + """Комментарий к оценке""" + comment: String + + """Дата и время первичного проставления оценки""" + createdTs: DateTime! + + """Идентификатор пользователя, выставившего оценку""" + createdUserId: ID! + + """Дата и время последнего изменения оценки""" + updatedTs: DateTime + + """Дата и время последнего изменения оценки""" + updatedUserId: ID + + """ + Модель оценки #markId + Необходима здесь, т.к оценка, с которой была выставлена "оценка ученика", может быть + впоследствии исключена из системы оценивания школы. Тогда мы не получим ее модель в + отдельном запросе актуальной системы оценивания. + """ + mark: SchoolMark +} + +"""Модель типа итоговой оценки FinalStudentMarkType""" +type EJournalFinalStudentMarkType { + """Идентификатор типа итоговой оценки""" + id: ID! + + """Код типа итоговой оценки""" + markTypeCode: FinalStudentMarkType! + + """Сокращенное название типа итоговой оценки""" + markTypeAbbreviation: String! + + """За какой тип периодов можно поставить данный тип итоговых оценок""" + finalPeriodTypeForWhichThisMarkTypeIsAllowed: EJournalFinalPeriodType +} + +"""Модель, агрегирующая итоговые оценки учеников""" +type EJournalFinalStudentMarks { + """ + Итоговые оценки учеников за аттестационные периоды, проставляемые учителем + """ + studentFinalMarks: [EJournalFinalStudentMark!]! + + """Средние взвешенные оценки (СРВ) учеников за аттестационные периоды""" + studentAverageWeightedMarks: [EJournalAverageWeightedStudentMark!]! +} + +"""Модель ответа на запрос списка итоговых оценок учеников""" +type EJournalFinalStudentMarksResponse { + """Тело ответа""" + data: EJournalFinalStudentMarks + + """Признак успешности выполнения запроса""" + isSuccess: Boolean! + + """Описание ошибки, возникшей в ходе выполнения запроса""" + error: EJournalError +} + +"""""" +type EJournalGetLessonDetailsResponse { + """Тело ответа""" + data: EJournalLesson + + """Признак успешности выполнения запроса""" + isSuccess: Boolean! + + """Описание ошибки, возникшей в ходе выполнения запроса""" + error: EJournalError +} + +"""Система оценивания ЭЖ""" +type EJournalGovernmentMarkType { + """Идентификатор системы оценивания""" + governmentMarkTypeId: ID! + + """Порядок следования системы оценивания в списке выбора оценки""" + governmentMarkTypePosition: Int! + + """Модель системы оценивания""" + governmentMarkType: GovernmentMarkType! + + """Допустимые оценки, входящую в систему оценивания #governmentMarkTypeId""" + availableMarks: [SchoolMark!]! +} + +"""Модель урока для Электронного журнала (ЭЖ)""" +type EJournalLesson { + """Идентификатор урока""" + lessonId: ID! + + """Тема урока для отображения. Берется либо из плана урока, либо КТП""" + lessonTopicName: String + + """Идентификатор ГКпП, к которой относится урок""" + stageSubjectGroupId: ID! + + """Дата-время начала урока""" + lessonStartDate: DateTime! + + """Дата-время окончания урока""" + lessonEndDate: DateTime! + + """Комментарий ко всему уроку""" + lessonComment: EJournalLessonComment + + """ + Признак, находится ли урок в будущем относительно даты/времени запроса? + """ + lessonInFuture: Boolean! + + """Признак замены урока""" + isReplacement: Boolean! + + """Признак, назначено ли на урок домашнее задание""" + homeworkAssigned: Boolean! + + """Признак, запланировано ли на урок проведение контрольной работы""" + controlWorkScheduled: Boolean! + + """Признак, назначена ли уроку тема (lessonTopicName)""" + lessonTopicAssigned: Boolean! + + """Идентификатор плана урока (в любом статусе)""" + lessonPlanId: ID + + """Модель опубликованного плана на урок""" + publishedLessonPlan: LessonPlanV4 + + """Уроки, с которых было назначено домашнее задание на этот урок""" + lessonsFromWhichHomeworkWasAssigned: [EJournalLesson!]! + + """Урок запланирован в календарно-тематическом плане (КТП)""" + includedInCalendarThematicPlan: Boolean! + + """Идентификатор КТП для ГКПП, к которой относится урок""" + calendarThematicPlanIdOfAssociatedStageSubjectGroup: ID +} + +"""Комментарий в журнале ко всему уроку""" +type EJournalLessonComment { + """Идентификатор комментария""" + journalLessonCommentId: ID! + + """Идентификатор урока, которому добавлен комментарий""" + lessonId: ID! + + """Текст комментария""" + comment: String! + + """Дата/время создания комментария""" + createdTs: DateTime! + + """Идентификатор пользователя, создавшего комментарий""" + createdUserId: ID! + + """Дата/время последнего редактирования комментария""" + updatedTs: DateTime + + """ + Идентификатор пользователя, выполнившего последнее изменение комментария + """ + updatedUserId: ID +} + +"""""" +type EJournalMutations { + """Создание записи посещения студентом урока""" + createEJournalStudentVisit(eJournalStudentVisitInput: EJournalCreateStudentVisitInput!): EJournalUpdateStudentVisitResponse! + + """Изменение статуса посещаемости урока студентом""" + updateEJournalStudentVisitStatus(eJournalUpdateStudentVisitStatusInput: EJournalUpdateStudentVisitStatusInput!): EJournalUpdateStudentVisitResponse! + + """Изменение комментария в записи посещаемости урока студентом""" + updateEJournalStudentVisitComment(journalStudentVisitId: ID!, comment: String!): EJournalUpdateStudentVisitResponse! + + """Удаление записи посещаемости урока студентом""" + deleteEJournalStudentVisit(journalStudentVisitId: ID!): EJournalDeleteOperationResponse! + + """Создание комментария учителя к уроку в журнале для ученика""" + createEJournalStudentLessonComment(eJournalCreateStudentLessonCommentInput: EJournalCreateStudentLessonCommentInput!): EJournalUpdateStudentLessonCommentResponse! + + """Изменение комментария учителя к уроку в журнале для ученика""" + updateEJournalStudentLessonComment(journalStudentCommentId: ID!, comment: String!): EJournalUpdateStudentLessonCommentResponse! + + """Создание текущей оценки ученика за урок""" + createEJournalStudentMark(eJournalCreateStudentMarkInput: EJournalCreateStudentMarkInput!): EJournalUpdateStudentMarkResponse! + + """Изменение комментария к текущей оценке учерника за урок""" + updateEJournalStudentMarkComment(journalStudentMarkId: ID!, comment: String!): EJournalUpdateStudentMarkResponse! + + """Сброс отложенной даты выставления оценки""" + resetEJournalTemporaryMarkDate(journalStudentMarkId: ID!): EJournalUpdateStudentMarkResponse! + + """Изменение отложенной даты выставления оценки""" + updateEJournalTemporaryMarkDate(journalStudentMarkId: ID!, date: Date!): EJournalUpdateStudentMarkResponse! + + """Обновление отложенной оценки""" + updateEJournalTemporaryMark(journalStudentMarkId: ID!, markId: ID!): EJournalUpdateStudentMarkResponse! + + """Удаление текущей оценки ученика за урок""" + deleteEJournalStudentMark(journalStudentMarkId: ID!): EJournalDeleteOperationResponse! + + """Создание итоговой оценки""" + createEJournalFinalStudentMark(eJournalCreateFinalStudentMarkInput: EJournalCreateFinalStudentMarkInput!): EJournalUpdateFinalStudentMarkResponse! + + """Изменение комментария к итоговой оценке""" + updateEJournalFinalStudentMarkComment(journalFinalStudentMarkId: ID!, comment: String!): EJournalUpdateFinalStudentMarkResponse! + + """Изменение значение итоговой оценки""" + updateEJournalFinalStudentMark(journalFinalStudentMarkId: ID!, markId: ID!): EJournalUpdateFinalStudentMarkResponse! + + """Удаление итоговой оценки""" + deleteEJournalFinalStudentMark(eJournalFinalStudentMarkId: ID!): EJournalDeleteOperationResponse! + + """Создание комментария учителя к уроку в журнале""" + createEJournalLessonComment(eJournalCreateLessonCommentInput: EJournalCreateLessonCommentInput!): EJournalUpdateLessonCommentResponse! + + """Изменение комментария учителя к уроку в журнале""" + updateEJournalLessonComment(journalLessonCommentId: ID!, comment: String!): EJournalUpdateLessonCommentResponse! + + """Сохранение факта посещения студентом видеоурока""" + saveStudentVideoLessonVisit(lessonId: ID!): Boolean +} + +"""""" +type EJournalQueries { + """Получение списка разрешений ЭЖ ГКпП для текущего пользователя""" + getUserPermissionsForEJournal(stageSubjectGroupId: ID!): EJournalUserPermissionsResponse! + + """Получение информации о ГКПП""" + getStageSubjectGroupInfo(stageSubjectGroupId: ID!): StageSubjectGroupInfoResponse! + + """Получение данных ЭЖ для ГКпП""" + getEJournalDataByFilters(stageSubjectGroupId: ID!, aggregationPeriodFilter: FinalPeriodFilter!, studentStatusInGroupFilter: StudentStatusInGroup!): EJournalDataResponse! + + """Получение периодов, по которым происходит аттестация в переданной ГКпП""" + getPeriodsByStageSubjectGroup(stageSubjectGroupId: ID!): EJournalConfiguredFinalPeriodsForStageSubjectGroupResponse! + + """ + Получение типов итоговых оценок, сконфигурированных для переданной ГКпП + """ + getStageFinalStudentMarkTypes(stageSubjectGroupId: ID!): EJournalConfiguredFinalStudentMarkTypesForStageSubjectGroupResponse! + + """Получение итоговых оценок учеников ГКпП""" + getJournalFinalStudentMarksByFilters(stageSubjectGroupId: ID!, aggregationPeriodFilter: FinalPeriodFilter!, studentStatusInGroupFilter: StudentStatusInGroup!): EJournalFinalStudentMarksResponse! + + """Получение сконфигурированных форм контроля для ГКпП""" + getLearningActivitiesByStageSubjectGroup(stageSubjectGroupId: ID!): EJournalConfiguredLearningActivitiesForStageSubjectGroupResponse! + + """ + Получение доступных в переданной ГКпП систем оценивания, оценки которых можно использовать + для проставления итоговых отметок ученикам + """ + getAvailableFinalMarksByStageSubjectGroup(stageSubjectGroupId: ID!): EJournalConfiguredGovernmentMarkTypesForStageSubjectGroupResponse! + + """ + Получение доступных в переданной ГКпП систем оценивания, оценки которых можно использовать + для проставления текущих отметок ученикам + """ + getMarkTypesWithMarksByStageSubjectGroup(stageSubjectGroupId: ID!): EJournalConfiguredGovernmentMarkTypesForStageSubjectGroupResponse! + + """ + Получение ГКпП контекстной школы, к ЭЖ которых у контекстного пользователя есть минимальный доступ + """ + getClassSubjectsByFilters(filter: EJournalAvailableEJournalsFilterInput!): [ClassSubject!]! + + """Получение расширенной информации по уроку""" + getEJournalLessonDetails(lessonId: ID!): EJournalGetLessonDetailsResponse! + + """Получение текущего времени контекстной школы""" + getSchoolDate: Date! +} + +"""Данные ученика ГКпП для ЭЖ, агрегированные за аттестационный период""" +type EJournalStudent { + """ + Информация о пользователе как ученике школы, в которой заведена ГКпП #stageSubjectGroupId + """ + studentAccount: StudentAccount! + + """Идентификатор ГКпП, в которой состоит ученик""" + stageSubjectGroupId: ID! + + """ + Признак того, что ученик перед последним в рассматриваемом аттестационном периоде переводом + в текущую ГКПП #stageSubjectGroupId находился в других ГКПП этой же параллели, + этой же школы и этого же предмета (равносильно предмету параллели - StageSubject) + """ + attendedOtherGroups: Boolean + + """ + Признак того, что ученик перед последним в рассматриваемом периоде переводом + в текущую ГКПП {@code stageSubjectGroupId} находился в других ГКПП этой же параллели, + этой же школы и этого же предмета и имеет там оценки + """ + hasMarksInOtherGroups: Boolean + + """ + Признак того, активен ли ученик в ГКпП в течение аттестационного периода + """ + activeInGroupAtPeriodEnd: Boolean +} + +"""Комментарий учителя к уроку в ЭЖ для ученика""" +type EJournalStudentLessonComment { + """Идентификатор комментария""" + journalStudentCommentId: ID! + + """Идентификатор урока, которому добавлен комментарий""" + lessonId: ID! + + """Идентификатор ученика, которому был адресован комментарий""" + studentId: ID! + + """Текст комментария""" + comment: String! + + """Дата и время создания комментария""" + createdTs: DateTime! + + """Идентификатор пользователя, создавшего комментарий""" + createdUserId: ID! + + """Дата и время последнего редактирования комментария""" + updatedTs: DateTime + + """ + Идентификатор пользователя, выполнившего последнее изменение комментария + """ + updatedUserId: ID +} + +"""Модель текущей (промежуточной) оценки ученика в Электронном журнале""" +type EJournalStudentMark { + """Идентификатор текущей оценки студента""" + journalStudentMarkId: ID! + + """Идентификатор ученика, которому проставлена эта оценка""" + lessonId: ID! + + """Идентификатор урока, за который проставлена оценка""" + studentId: ID! + + """Идентификатор формы контроля, за которую проставлена оценка""" + learningActivityId: ID! + + """ + Идентификатор настройки формы контроля для предмета и уровня образования из которой были извлечены атрибуты оценки + """ + studyStepSubjectLearningActivityId: ID + + """Идентификатор типа формы контроля""" + formControlType: FormControlTypeEnum! + + """Идентификатор выставленной оценки""" + markId: ID! + + """ + Отложенная дата выставления оценки + В случае выставления временной оценки, указывается дата, когда оценка будет считаться проставленной в журнал + """ + temporaryMarkDate: Date + + """Вес оценки на момент выставления""" + weight: Int! + + """Значение оценки в баллах в момент выставления""" + initialValue: Int! + + """Комментарий к оценке""" + comment: String + + """Дата и время первичного проставления оценки""" + createdTs: DateTime! + + """Идентификатор пользователя, выставившего оценку""" + createdUserId: ID! + + """Дата и время последнего изменения оценки""" + updatedTs: DateTime + + """Идентификатор пользователя, сделавшего последнее изменение в оценке""" + updatedUserId: ID + + """Модель оценки #markId""" + mark: SchoolMark + + """Модель формы контроля #learningActivityId""" + learningActivity: LearningActivity + + """Пользователь, редактировавший оценку (в широком смысле) последним""" + userWhoLastUpdatedMark: UserAccount +} + +"""Информация о посещении урока учеником""" +type EJournalStudentVisit { + """Идентификатор записи посещения""" + journalStudentVisitId: ID! + + """Идентификатор урока, посещенного учеником""" + lessonId: ID! + + """Идентификатор ученика, посетившего урок""" + studentId: ID! + + """Статус посещения урока учеником""" + visitStatus: StudentVisitStatus! + + """Длительность опоздания ученика на урок в минутах""" + lateTimeMinutes: Int + + """Комментарий учителя к посещению урока учеником""" + comment: String + + """Дата/время создания записи о посещаемости""" + createdTs: DateTime! + + """Идентификатор пользователя, создавшего запись о посещаемости""" + createdUserId: ID! + + """Дата/время последнего редактирования записи о посещаемости""" + updatedTs: DateTime + + """ + Идентификатор пользователя, выполнившего последнее изменение записи о посещаемости + """ + updatedUserId: ID +} + +"""""" +type EJournalUpdateFinalStudentMarkResponse { + """""" + data: EJournalFinalStudentMark + + """""" + isSuccess: Boolean! + + """""" + error: EJournalError +} + +"""""" +type EJournalUpdateLessonCommentResponse { + """""" + data: EJournalLessonComment + + """""" + isSuccess: Boolean! + + """""" + error: EJournalError +} + +"""""" +type EJournalUpdateStudentLessonCommentResponse { + """""" + data: EJournalStudentLessonComment + + """""" + isSuccess: Boolean! + + """""" + error: EJournalError +} + +"""""" +type EJournalUpdateStudentMarkResponse { + """""" + data: EJournalStudentMark + + """""" + isSuccess: Boolean! + + """""" + error: EJournalError +} + +"""""" +type EJournalUpdateStudentVisitResponse { + """""" + data: EJournalStudentVisit + + """""" + isSuccess: Boolean! + + """""" + error: EJournalError +} + +"""""" +input EJournalUpdateStudentVisitStatusInput { + """""" + journalStudentVisitId: ID! + + """""" + studentVisitStatus: StudentVisitStatus! + + """""" + lateTime: Int +} + +""" +Список разрешений, которые имеет пользователь по отношению к Электронному журналу (ЭЖ) ГКпП +""" +type EJournalUserPermissions { + """ + Идентификатор ГКпП, к ЭЖ которой у пользователя есть разрешения #permissions + """ + stageSubjectGroupId: ID! + + """ + Список разрешений, которые есть у пользователя по отношению к ЭЖ ГКпП #stageSubjectGroupId + """ + permissions: [String!]! +} + +""" +Результат запроса списка разрешений пользователя по отношению к ЭЖ ГКпП +""" +type EJournalUserPermissionsResponse { + """Тело ответа""" + data: EJournalUserPermissions + + """Признак успешности выполнения запроса""" + isSuccess: Boolean! + + """Описание ошибки, возникшей в ходе выполнения запроса""" + error: EJournalError +} + +"""""" +type EditMobileNumberVerifyResult { + """Признак совпали ли введеный и ожидаемый код""" + codesAreEqual: Boolean! + + """Сколько осталось попыток""" + attemptsLeft: Int! +} + +"""Запрос на изменение ячейки в журнале посещаемости""" +input EditVisitJournalCellInput { + """Идентификатор ячейки журнала""" + visitJournalCellId: ID! + + """Значение""" + value: VisitJournalCellValueEnum! +} + +"""Срабатывание ограничения""" +type EduConstraintMatch { + """Параметры""" + parameters: [String!]! + + """Счет""" + matchScore: Score! +} + +"""""" +type EducationDocument { + """""" + name: String! + + """""" + dateOfIssue: Date! +} + +"""""" +input EducationDocumentInput { + """""" + name: String! + + """""" + dateOfIssue: Date! +} + +"""""" +input EducationalOrganizationFilter { + """Тип пользователя""" + userTypeId: String! + + """Текст поиска""" + searchText: String + + """ID региона""" + regionId: UUID! +} + +"""Статусы заданий для электронного журнала""" +type ElectonicJournalStudentTasks { + """список заданий""" + lessonPlanTasks: [ElectronicJournalLessonPlanTask]! + + """статусы заданий студентов""" + cells: [StudentTaskStatusesMap!]! +} + +"""Задания на урок для электронного журнала""" +type ElectronicJournalLessonPlanTask { + """Идентификатор задания в плане на урок""" + taskId: ID! + + """Наименование задания""" + taskName: String! + + """Признак является ли задание домашней работой""" + isHomework: Boolean! +} + +"""Уровень доступа относительно группы по предмету""" +enum ElectronicJournalPermission { + """Только просмотр""" + READ_ONLY + + """Просмотр и Изменение""" + READ_AND_WRITE + + """Нет прав""" + NO_PERMISSIONS + + """Просмотр и Изменение только журнала посещаемости""" + READ_AND_WRITE_TO_VISIT_JOURNAL +} + +"""""" +type ElectronicJournalQueries { + """запрос итоговых оценок студента""" + getStudentJournalFinalMarks: [JournalFinalStudentMarkByStageSubject] + + """запрос итоговых оценок студента для его родителя""" + getStudentJournalFinalMarksForParent( + """идентификатор пользователя ученика""" + childUserId: ID! + ): [JournalFinalStudentMarkByStageSubject] + + """Получение информации об уроках по предмету за учебный период""" + getStudentJournalMarks( + """Id учебного периода""" + studyPeriodId: ID! + + """Id предмета""" + subjectId: ID! + ): [StudentStudyDate]! + + """ + Получение информации об уроках по предмету за учебный период для родителя + """ + getStudentJournalMarksForParent( + """идентификатор пользователя ученика""" + childUserId: ID! + + """Id учебного периода""" + studyPeriodId: ID! + + """Id предмета""" + subjectId: ID! + ): [StudentStudyDate]! + + """Получение оценок по предмету за учебные периоды""" + getStudentJournalMarksInPeriods( + """Id учебных периодов""" + studyPeriodIds: [ID!]! + + """Id предмета""" + subjectId: ID! + ): [StudentPeriodMarks]! + + """Получение оценок по предмету за учебные периоды для родителя""" + getStudentJournalMarksInPeriodsForParent( + """идентификатор пользователя ученика""" + childUserId: ID! + + """Id учебных периодов""" + studyPeriodIds: [ID!]! + + """Id предмета""" + subjectId: ID! + ): [StudentPeriodMarks]! + + """Катаолог учебных активностей для школы""" + getLearningActivitiesBySchool(schoolId: UUID!): [LearningActivity!]! +} + +"""""" +type EnabledWidget { + """""" + id: String! + + """""" + preview: String! + + """""" + title: String! + + """""" + description: String! + + """""" + visual: [String!]! + + """""" + category: [String!]! + + """""" + group: [String!]! +} + +"""""" +type EnabledWidgets { + """""" + widgets: [EnabledWidget!]! + + """""" + visuals: [String!]! + + """""" + categories: [String!]! + + """""" + groups: [String!]! +} + +"""""" +type Entity { + """""" + entityType: EntityType! + + """""" + entityId: ID! +} + +"""Школы, учителя и ученики на платформе""" +type EntityOnPlatform { + """""" + entitiesCount: Int + + """""" + dynamic: Int + + """""" + yearMonth: String! +} + +"""""" +enum EntityType { + """""" + MODULE + + """""" + SUBJECT + + """""" + LESSON + + """""" + HOMEWORK + + """""" + LESSON_PLAN + + """""" + LESSON_PLAN_MATERIAL_BLOCK +} + +"""""" +type EnumValue { + """""" + value: String! + + """""" + displayableName: String! +} + +"""Экипировка""" +type Equipment { + """""" + id: ID! + + """Литературное имя""" + name: String! + + """Относительная ссылка на изображение экипировки""" + imageUrl: String! + + """ + Относительное ссылка в файловый сервис на изображение шмотки в положении анфас для отображения надетой на персонажа + """ + dressedImageUrl: String! + + """Слот экипировки (шлем, ботинки, меч и etc.)""" + equipmentSlot: EquipmentSlotEnum! + + """Какие характеристики и насколько прокачивает экипировка""" + abilities: [AbilityPower!]! +} + +"""Слот для экипировки""" +enum EquipmentSlotEnum { + """Ботинки""" + BOOTS + + """Оружие в левой руке""" + LEFT_ARM_WEAPON + + """Оружие в правой руке""" + RIGHT_ARM_WEAPON + + """Перчатка на левую руку""" + LEFT_ARM_GLOVE + + """Перчатка на правую руку""" + RIGHT_ARM_GLOVE + + """Шапка""" + HELMET + + """Тело""" + BODY + + """Очки""" + GLASSES + + """Футболка""" + T_SHIRT + + """Штаны""" + TROUSERS + + """Украшение на шею""" + NECKLACE +} + +"""""" +type EvaluatedTaskCriterion { + """ + Идентификатор (student_task_assessment_criteria_values.student_task_assessment_criteria_value_id) + """ + evaluatedTaskCriterionId: ID! + + """Критерий, для которого задана оценка""" + taskCriterion: TaskCriterion! + + """Значение оценки""" + value: String! +} + +"""Данные для оценки критериев (student_task_assessment_criteria_values)""" +input EvaluatedTaskCriterionInput { + """ + Идентификатор критерия задания (xref_task_assessment_criteria_scales.task_criteria_scale_id) + """ + taskCriterionId: ID! + + """Значение оценки""" + value: String! +} + +"""""" +type EvaluationRule { + """""" + logicalOperatorId: LogicalLinkTypeEnum + + """""" + value: EvaluationRuleValue! + + """""" + editable: Boolean! + + """""" + deletable: Boolean! +} + +"""Правило фильтрации и его возможные настройки""" +type EvaluationRuleFieldOption { + """Идентификатор правила""" + id: ID! + + """Название""" + name: String! + + """Операторы, используемые в правиле фильтрации""" + operators: [String!]! + + """ + Тип значения может быть выбираемым из списка ('select') или простое число ('number') + """ + valueType: ClauseValueTypeEnum! + + """""" + subFields: [KeyValue!] + + """""" + values: [KeyValue!] +} + +"""""" +type EvaluationRuleGroup { + """""" + logicalOperatorId: LogicalLinkTypeEnum + + """""" + rulesInGroup: [EvaluationRule!]! +} + +"""""" +input EvaluationRuleGroupInput { + """""" + logicalOperatorId: LogicalLinkTypeEnum + + """""" + rulesInGroup: [EvaluationRuleInput!]! +} + +""" +Группы правил фильтрации в текущем и вышестоящем плане с результатом их сравнения +""" +type EvaluationRuleGroupsWithEquivalentFlag { + """""" + evaluationRuleGroup: [EvaluationRuleGroup!]! + + """""" + superiorEvaluationRuleGroup: [EvaluationRuleGroup!] + + """""" + equivalentRuleGroup: Boolean! + + """""" + multiCampusIsEnabled: Boolean + + """""" + multiCampusEvaluationRuleGroup: [EvaluationRuleGroup!] +} + +"""""" +input EvaluationRuleInput { + """""" + logicalOperatorId: LogicalLinkTypeEnum + + """""" + value: EvaluationRuleValueInput! + + """""" + editable: Boolean + + """""" + deletable: Boolean +} + +"""Заполненный единичный элемент правила фильтрации""" +type EvaluationRuleValue { + """""" + fieldId: ID! + + """""" + subFieldKey: String + + """""" + operator: String! + + """""" + value: [String!]! +} + +"""Определяет тип value в StudentEvaluationRuleValue""" +enum EvaluationRuleValueFieldType { + """""" + TEXT + + """""" + PROJECT_LINK +} + +"""Заполненный элемент правила фильтрации для сохранения""" +input EvaluationRuleValueInput { + """""" + fieldId: ID! + + """""" + subFieldKey: String + + """""" + operator: String! + + """""" + value: [String!]! +} + +"""Запланированное Событие(домашняя работа, урок, факультатив)""" +type Event { + """Идентификатор события(timetableId)""" + id: ID! + + """Название события(пример: Биология/Домашняя работа/Факультатив)""" + name: String! + + """Описание события (пример: название кабинета в котором будет событие)""" + description: String! + + """Номер урока, когда type=Lesson""" + number: String! + + """Дата и время начала события""" + start: DateTime! + + """Дата и время завершения события""" + end: DateTime! + + """Идентификатор интервала времени, в который проводится событие""" + lessonTimeslotId: ID + + """иконка""" + icon: String! + + """Имя класса(пример: 5А)""" + className: String! + + """ + Название Группы по Предмету, в рамках которого происходит событие (stage_subject_groups.name) + """ + classSubjectName: String + + """Предмет (пример: Биология)""" + subject: Subject! + + """Отметка о посещении Учеником события""" + visitJournalValue: VisitJournalCellValueEnum + + """""" + goalId: ID @deprecated + + """""" + plannedGoalLevel: Float @deprecated + + """""" + achievedGoalLevel: Float @deprecated + + """онлайн-урок к плану урока""" + onlineLessonToLessonPlan: OnlineLessonToLessonPlan + + """заметка к плану урока""" + lessonNoteToLessonPlan: LessonNoteToLessonPlan + + """Тема к плану урока""" + lessonTopicToLessonPlan: LessonTopicToLessonPlan + + """Идентификатор плана урока""" + lessonPlanId: ID + + """учитель""" + teacher: Teacher + + """id группы по предмету""" + stageSubjectGroupId: Int + + """""" + studentTaskProgress: ThermometerPMOStatusEnum @deprecated + + """""" + studentProgress: StudentSubjectProgress @deprecated(reason: "use studentTaskProgress") + + """""" + averageScore: Float @deprecated +} + +"""Данные о событии""" +input EventData { + """Имя класса события""" + eventClassName: String! + + """Событие""" + event: JsonNode! +} + +"""Мапа eventId->event""" +type EventDataMap { + """Идентификатор события""" + eventId: String! + + """Данные о событии""" + event: JsonNode! +} + +"""Типы филдов в событиях""" +enum EventFieldTypeEnum { + """Числовое""" + NUMBER + + """Дата и время""" + DATE_TIME + + """Булево""" + BOOLEAN + + """Строковое""" + STRING +} + +"""Модификации событий""" +type EventGeneratorMutations { + """Отправить список событий""" + sendEvents(events: [EventData]!, shard: String): [EventDataMap!]! +} + +"""Запросы данных о событиях""" +type EventGeneratorQueries { + """Получение мета-данных о возможных событиях""" + getEventsMeta: [EventMeta!]! + + """Получить информацию о структуре события""" + getEventStructure(eventClassName: String!): EventStructureData! + + """Получить информацию о списке шард""" + getShardSet: [String!]! +} + +"""Информация о предстоящем событии в экзаменационной среде""" +type EventInfo { + """Идентификатор события""" + examEventId: ID! + + """Название проекта по которому проводится событие""" + goalName: String! + + """Дата и время начала события""" + startDateTime: DateTime! + + """Дата и время окончания события""" + endDateTime: DateTime! + + """Тип события""" + examEventType: ExamType! + + """Причина недоступности события для прохождения""" + denialReason: ExamDenialReason +} + +"""Мета-данные о событии""" +type EventMeta { + """Имя класса события""" + eventClassName: String! +} + +"""""" +type EventMutations { + """БА - Создание мероприятия в школе""" + createActivityEvent(activityEvent: ActivityEventInput!): ActivityEvent! + + """БА - Обновление мероприятия в школе""" + updateActivityEvent(activityEventId: ID!, activityEvent: ActivityEventInput!): ActivityEvent! + + """БА - одобрить заявку на мероприятие участника""" + approveParticipantEvent(activityEventId: ID!, comment: String, input: ActivityEventInput, withChanges: Boolean): ActivityEvent! + + """БА - отклонить заявку на мероприятие участника""" + rejectParticipantEvent(activityEventId: ID!, comment: String): ActivityEvent! + + """Участник - предложить мероприятие""" + createParticipantEvent(input: ActivityEventByStudentInputModel!): ActivityEvent! + + """Участник - редактировать предложенное мероприятие""" + updateParticipantEvent(activityEventId: ID!, input: ActivityEventByStudentInputModel!): ActivityEvent! + + """Участник - отозвать предложенное мероприятие""" + cancelParticipantEvent(activityEvent: ID!): ActivityEvent! +} + +"""""" +type EventQueries { + """""" + getEventStudents( + """Идентификатор мероприятия""" + eventId: ID! + + """Параметры пагинации""" + page: PagingInput! + + """Тип студентов""" + studentType: StudentEventTypeEnum! + ): [StudentEvent!]! + + """Получение количества мероприятий""" + getActivityEventCount: Int! + + """Получение списка предложенных мероприятий""" + getActivityEvents( + """Параметры сортировки""" + sortingField: SortingField + + """Параметры пагинации""" + page: PagingInput! + ): [ActivityEvent!]! + + """Получение списка событий "Мероприятие" по идентификатору школу""" + getCalendarEventParticipantsReport(eventId: ID!): ReportExcelFile! + + """Получение мероприятия по идентификатору""" + getActivityEvent(activityEventId: ID!): ActivityEvent! + + """Получение участником списка предложенных им мероприятий""" + getMySuggestedActivities(statuses: [ParticipantEventStatus], page: PagingInput!): [CalendarEvent!] + + """Получение участником количества предложенных им мероприятий""" + getMySuggestedActivitiesCount(statuses: [ParticipantEventStatus]): Int! + + """Получение рекомендованной продолжительности мероприятия""" + getLaboriousnessByGoalId(goalId: ID!): Int! + + """Получение списка отзывов по идентификатору мероприятия""" + getActivityEventFeedback(activityEventId: ID!, page: PagingInput!): [StudentEventFeedback]! + + """Получение количества отзывов по идентификатору мероприятия""" + getActivityEventFeedbackCount(activityEventId: ID!): Int! +} + +"""Данные о структуре события""" +type EventStructureData { + """Имя класса события""" + eventClassName: String! + + """Набор полей события""" + fields: [FieldData]! +} + +"""Экзамен в школе""" +type Exam { + """Идентификатор экзамена""" + examId: ID! + + """Идентификатор события""" + eventId: ID! + + """Формат проведения""" + examType: ExamType! + + """Дата начала экзамена""" + beginDate: DateTime! + + """Дата окончания экзамена""" + endDate: DateTime! + + """Место проведения""" + location: String! + + """IP аудитории""" + ip: String @deprecated(reason: "Не решает бизнес-задачи") + + """Максимальное количество участников""" + maxStudentCount: Int + + """Виден ли экзамен студентам""" + isVisible: Boolean! + + """Название проекта""" + name: String! + + """Проект""" + goalId: ID! + + """Активен ли лист ожидания""" + isWaitListActive: Boolean! + + """Текущее число зарегистрированных студентов на экзамен""" + currentStudentsCount: Int! + + """Текущее число студентов в списке ожидания""" + currentWaitListStudentsCount: Int! + + """Дата создания экзамена""" + createDate: DateTime! + + """Дата обновления экзамена""" + updateDate: DateTime! + + """Индентификатор школы""" + schoolId: ID! + + """Дата начала регистрации на экзамен""" + startRegisterDate: DateTime + + """Дата завершения регистрации на экзамен""" + stopRegisterDate: DateTime + + """Зарегистрирован студент на событие или нет""" + isRegistered: Boolean + + """Находится ли студент в листе ожидания""" + isInWaitList: Boolean + + """Наименование модуля""" + goalName: String! + + """Тип события""" + eventType: String + + """Статус регистрации на календарное событие""" + registrationAccessStatus: ExamEventRegistrationAccessStatus! + + """Список классов (групп по предмету)""" + stageSubjectGroups: [StageSubjectGroup] + + """Курсы""" + stages: [Stage] + + """Факт включения прокторинга""" + isProctoring: Boolean +} + +"""Причина недопуска студента в экзамен""" +enum ExamDenialReason { + """Забыл записаться на экзаменационный модуль""" + FORGOT_TO_REGISTER_ON_MODULE + + """Забыл записаться на событие""" + FORGOT_TO_REGISTER_ON_EVENT + + """Забыл записаться в обоих местах""" + FORGOT_TO_REGISTER_ON_BOTH + + """Экзаменационное событие не найдено""" + EXAM_EVENT_NOT_FOUND +} + +"""статус доступности регистрации на экзамен для конкретного студента""" +enum ExamEventRegistrationAccessStatus { + """Экзамен доступен для регистрации""" + OPEN + + """ + Экзамен недоступен для регистрации (кончились места или время регистрации) + """ + CLOSED + + """ + Экзамен конфликтует по времени с другим экзаменом, на котором студент уже зарегистрирован + """ + CONFLICT +} + +"""""" +input ExamEventsSearchParametersInput { + """Кампус""" + schoolId: UUID + + """Проект""" + goalId: ID + + """Формат проведения""" + examType: ExamType + + """Группы по предметам""" + stageSubjectGroupIds: [ID] + + """Дата начала периода поиска экзаменов""" + beginDate: DateTime + + """Дата окончания периода поиска экзаменов""" + endDate: DateTime + + """Id мероприятий исключенных из поиска""" + excludedEventIds: [ID] +} + +"""Экзамен в школе""" +input ExamInput { + """Формат проведения""" + examType: ExamType + + """Дата начала экзамена""" + beginDate: DateTime! + + """Дата окончания экзамена""" + endDate: DateTime! + + """Место проведения""" + location: String! + + """IP аудитории""" + ip: String + + """Максимальное количество участников""" + maxStudentCount: Int + + """Видимость""" + isVisible: Boolean + + """Название проекта""" + name: String! + + """Проект""" + goalId: ID! + + """Активен ли лист ожидания""" + isWaitListActive: Boolean + + """Дата начала регистрации на экзамен""" + startRegisterDate: DateTime + + """Дата завершения регистрации на экзамен""" + stopRegisterDate: DateTime + + """Группы по предметам""" + stageSubjectGroups: [ID] + + """Факт включения прокторинга""" + isProctoring: Boolean +} + +"""Учебный модуль s21""" +type ExamModule { + """Идентификатор учебного модуля""" + goalId: ID! + + """Мета информация о учебном модуле""" + projectSettings: ExamModuleSettings + + """Общая информация о учебном модуле""" + generalInformation: ExamModuleGeneralInfo + + """Задания учебного модуля""" + tasks: ExamModuleTasks +} + +"""Общая информация о учебном модуле s21""" +type ExamModuleGeneralInfo { + """Идентификатор учебного модуля""" + goalId: ID! + + """Количество попыток на экзамен""" + examAttempts: Int! + + """Количество попыток на задание""" + taskAttempts: Int! + + """Начисление баллов: Успех""" + successLevelPoints: Int! + + """Начисление баллов: Пропуск""" + taskSkipPoints: Int! + + """Начисление баллов: Ошибка""" + taskFailPoints: Int! + + """Повышающий коэффициент""" + multiplier: Float! + + """Очки за экзамен""" + examPoints: Int! + + """Процент выполнения""" + percentageOfCompletion: Int! +} + +"""Общая информация о учебном модуле s21""" +input ExamModuleGeneralInfoInput { + """Идентификатор учебного модуля""" + goalId: ID! + + """Количество попыток на задание""" + examAttempts: Int! + + """Количество попыток на задание""" + taskAttempts: Int! + + """Начисление баллов: Успех""" + successLevelPoints: Int! + + """Начисление баллов: Пропуск""" + taskSkipPoints: Int! + + """Начисление баллов: Ошибка""" + taskFailPoints: Int! + + """Повышающий коэффициент""" + multiplier: Float! + + """Очки за экзамен""" + examPoints: Int! + + """Процент выполнения""" + percentageOfCompletion: Int! +} + +"""Задания учебного модуля разибтые на "уровни" s21""" +type ExamModuleLevelTaskGroup { + """Идентификатор уровня (playlist)""" + levelId: ID! + + """Порядковый номер уровня""" + levelOrder: Int! + + """Комментарий в рамках уровня""" + note: String + + """Информация о заданиях учебного модуля""" + tasks: [ExamModuleTask!] +} + +"""Задания учебного модуля разбитые на "уровни" s21""" +input ExamModuleLevelTaskGroupInput { + """Идентификатор уровня экзамена""" + levelId: ID! + + """Порядковый номер уровня""" + levelOrder: Int! + + """Текстовое описание уровня""" + note: String + + """Задания внутри уровня""" + tasks: [ExamModuleTaskInput!] +} + +"""Мета информация о учебном модуле s21""" +type ExamModuleSettings { + """Идентификатор учебного модуля""" + goalId: ID! + + """Название учебного модуля""" + name: String! + + """Название экзамена""" + examName: String! + + """Описание экзамена""" + description: String! + + """Описание учебного модуля""" + idea: String! + + """ + "Уровень публикации" + """ + scope: ScopeEnum! + + """Заметка для методиста АНО""" + note: String + + """Рекомендуемая трудоемкость в часах""" + laboriousness: Int! + + """Предмет, для которого создан Учебный Модуль""" + subject: Subject! + + """Параллель, для которой рекомендован Учебный Модуль""" + stage: Stage! + + """Дата создания Учебного Модуля""" + createTime: DateTime! + + """Дата последнего изменения Учебного Модуля""" + modifyTime: DateTime + + """Пользователь, создавший Учебный Модуль""" + createUser: User! + + """Пользователь, который последний раз модифицировал Учебный Модуль""" + modifyUser: User +} + +"""Мета информация о учебном модуле s21""" +input ExamModuleSettingsInput { + """Идентификатор учебного модуля""" + goalId: ID + + """Название учебного модуля""" + goalName: String! + + """Описание учебного модуля""" + idea: String! + + """Параллель, для которой рекомендован Учебный Модуль""" + stageId: ID! + + """Предмет, для которого создан Учебный Модуль""" + subjectId: ID! + + """Рекомендуемая трудоемкость в часах""" + laboriousness: Int! + + """ + "Уровень публикации" + """ + scope: ScopeEnum! + + """Заметка для методиста АНО""" + note: String + + """Тип контента""" + contentType: ModuleType! + + """Тип выполнения""" + executionType: ModuleExecutionType! +} + +"""Информация о задании учебного модуля s21""" +type ExamModuleTask { + """Идентификатор задания""" + taskId: ID! + + """Название задания""" + taskName: String! + + """Дата создания задания""" + createTime: DateTime! + + """Дата последнего изменения задания""" + modifyTime: DateTime + + """Пользователь, создавший задание""" + createUser: User! + + """Пользователь, который последний раз модифицировал задание""" + modifyUser: User + + """Порядковый номер для корректного отображения на фронте""" + taskOrder: Int! +} + +""" +Задание учебного модуля с указанием его порядкового номера в списке s21 +""" +input ExamModuleTaskInput { + """Идентификатор задания""" + taskId: ID! + + """ + Порядковый уровень задания в рамках всего экзамена (для отображения на фронте) + """ + taskOrder: Int! +} + +"""Задания учебного модуля s21""" +type ExamModuleTasks { + """Идентификатор учебного модуля""" + goalId: ID! + + """ + Задания учебного модуля разибтые на "уровни" + """ + levelTaskGroups: [ExamModuleLevelTaskGroup!] +} + +"""Задания учебного модуля s21""" +input ExamModuleTasksInput { + """Идентификатор учебного модуля""" + goalId: ID! + + """Уровни внутри экзамена с заданиями""" + levelTaskGroups: [ExamModuleLevelTaskGroupInput!] +} + +"""Мета информации для подготовки студента к прохождению экзамена""" +type ExamPassingUser { + """Идентификатор экзамена (goal)""" + examId: ID! + + """Заголовок экзамена""" + examName: String! + + """Описание экзамена""" + examDescription: String! + + """Временный идентификатор пользователя в другой системе""" + fakeExternalSystemUserId: String! + + """Временный логин пользователя в другой системе""" + fakeExternalSystemUserLogin: String! + + """SSH ключ""" + key: String + + """ + Флаг, показывающий был ли начат экзамен (хотя бы одно задание было начато пользователем) + """ + isExamStarted: Boolean! +} + +"""Информация о результатах экзамена""" +type ExamResult { + """Набранное количество баллов в текущей попытке""" + score: Int! + + """Процент выполнения экзамена в текущей попытке""" + successRate: Int! + + """Количество выполненных верно заданий в текущей попытке""" + successTaskCount: Int! + + """Бинарный результат для текущей попытки - пройден/провален""" + isPassed: Boolean! + + """Количество пройденных уровней в текущей попытке""" + levelsPassed: Int! + + """Всего уровней в экзамене в текущей попытке""" + levelsTotal: Int! + + """Количество фактически допущенных ошибок в текущей попытке""" + mistakesMade: Int! + + """ + Количество ошибок в экзамене которые можно было допустить в текущей попытке + """ + mistakesAvailableTotal: Int! + + """Набранное кол-во XP (баллов) за все попытки""" + scoreAllAttempts: Int! + + """Процент выполнения за все попытки""" + successRateAllAttempts: Int! + + """Бинарный результат для всех попыток (пройден/провален)""" + isPassedAllAttempts: Boolean! + + """Это первая попытка прохождения (true/false)""" + isFirstAttempt: Boolean! +} + +""" +Информация о задании во время прохождения экзамена с указанием кол-ва попыток и статусами +""" +type ExamStatusInfo { + """Идентификаор экзамена""" + goalId: Int! + + """Идентификатор события, в котором происходит экзамен""" + examEventId: Int! + + """Дата и время начала экзамена""" + startDateTime: DateTime! + + """Дата и время окончания экзамена""" + endDateTime: DateTime! + + """Текущее время сервера""" + nowDateTime: DateTime! + + """Продолжительность экзамена в минутах""" + duration: Int! + + """Количество уровней заданий экзамена""" + levelCount: Int! + + """Количество попыток прохождения на одно задание""" + taskAttemptsCount: Int! + + """Количество попыток прохождения на весь экзамен""" + examAttemptsCount: Int! + + """Текущий статус экзамена""" + status: GoalStatus! + + """Причина по которой не пускаем судента в экзамен""" + denialReason: ExamDenialReason + + """Выолняется ли данный экзамен в рамках курса""" + isExamInCourse: Boolean + + """ + Экзамен происходит с применением одной из существующих систем прокторинга + """ + isProctoring: Boolean +} + +""" +Информация о задании во время прохождения экзамена с указанием кол-ва попыток и статусами +""" +type ExamTaskWithStatuses { + """Идентификатор уровня""" + levelId: Int! + + """Порядковый номер уровня""" + levelOrder: Int! + + """Комментарий (описание) к уровню экзмена""" + levelNote: String! + + """Идентификатор задания""" + taskId: Int! + + """Номер задания внутри уровня""" + taskOrder: Int! + + """Ссылка на проект с заданием в гитлабе""" + taskGitlabProjectUrl: String! + + """Кол-во оставшихся попыток в рамках этого задания""" + tryCountTaskRemain: Int! + + """Кол-во израсходованных попыток в рамках этого задания""" + tryCountTaskSpent: Int! + + """Кол-во доступных попыток в рамках этого задания""" + tryCountTaskAvailable: Int! + + """Название задания""" + taskTitle: String! + + """Контент (markdown) задания""" + contentText: String! + + """Кол-во оставшихся попыток в рамках всего экзамена""" + tryCountExamRemain: Int! + + """ + Массив со статусами всех заданий (в том числе не начатых) распределённых по уровням внутри экзамена + """ + levelsStatuses: [ExamTasksStatusesByLevel!]! + + """Дата и время окончания экзамена""" + endDateTime: DateTime! + + """Текущее время сервера""" + nowDateTime: DateTime! + + """Контент задания с правильными подставленными ссылками на изображения""" + taskContent: Task +} + +"""""" +type ExamTasksStatusesByLevel { + """Порядковый номер уровня""" + levelOrder: Int! + + """Список статусов для задач внутри одного уровня""" + tasksStatuses: [TaskStatusEnum]! +} + +"""Информация о результатах прохождения экзаменационного теста""" +type ExamTestResult { + """Полная информация по заданию в контексте студента""" + studentTaskInfo: StudentTaskInfo! + + """Набранное количество XP (баллов) в текущей попытке""" + score: Int! + + """Процент выполнения задания в текущей попытке""" + successRate: Int! + + """Всего ответов на задание в дженерике в текущей попытке""" + allAnswersCount: Int! + + """Количество верных ответов в текущей попытке""" + successAnswersCount: Int! + + """Бинарный результат - пройден/провален для текущей попытки""" + isPassed: Boolean! + + """Набранное кол-во XP (баллов) за все попытки""" + scoreAllAttempts: Int! + + """Процент выполнения за все попытки""" + successRateAllAttempts: Int! + + """Бинарный результат для всех попыток (пройден/провален)""" + isPassedAllAttempts: Boolean! + + """Это первая попытка прохождения (true/false)""" + isFirstAttempt: Boolean! +} + +""" +Отправляемый ответ +внутри result следующая структура (+ экранирование) +{ + "type":"result", + "data":{ + "progress":"null", + "passingScore":"", + "status":"incomplete" + } +} +Информация о экзаменационном тесте +""" +type ExamTestStatusInfo { + """Идентификаор модуля с тестом""" + goalId: Int! + + """Идентификатор события, в котором происходит экз. тест""" + examEventId: Int! + + """Дата и время начала теста""" + startDateTime: DateTime! + + """Дата и время окончания теста""" + endDateTime: DateTime! + + """Текущее время сервера""" + nowDateTime: DateTime! + + """Продолжительность теста в минутах""" + duration: Int! + + """Текущий статус экз. теста""" + status: GoalStatus! + + """Идентификатор задания для теста""" + taskId: Int! + + """Причина по которой не пускаем судента в экз. тест""" + denialReason: ExamDenialReason + + """Выолняется ли данный тест в рамках курса""" + isExamInCourse: Boolean +} + +"""Формат проведения экзамена в Ш21""" +enum ExamType { + """Экзамен""" + EXAM + + """Тест""" + TEST +} + +"""""" +type ExcelWithAffectedStudentsModel { + """Количество студентов, которых затронет перепубликация""" + numberOfAffectedStudents: Int! + + """Base64 эксель со студентами, которых затронет перепубликация""" + base64Excel: String +} + +"""Подробная информация о запрете выполнения задания""" +type ExecuteDenyInfo { + """Причина запрета выполнения задания""" + reason: ExecuteDenyReason! + + """Мета информация""" + meta: String +} + +"""Причина, по которой выполнение запрещено""" +enum ExecuteDenyReason { + """Срок жесткого дедлайна истек""" + HARD_DEADLINE_EXPIRED + + """Один из предыдущих уровней модуля не выполнен""" + PREVIOUS_LEVEL_NOT_ACHIEVED +} + +"""Результат отчисления студентов""" +type ExpelResult { + """Успешно отчисленные студенты""" + successfullyExpelledStudents: [Student!] + + """Студенты, в ходе отчисления которых возникли ошибки""" + studentsWithErrors: [Student!] +} + +"""Полученный опыт за конкретные дни""" +type ExperienceHistoryDate { + """дата получения опыта""" + awardDate: Date! + + """количество накопленного опыта на дату""" + expValue: Int! + + """количество накопленного опыта за день""" + experienceReceived: Int! +} + +"""""" +type ExperienceLevel { + """Уровень (Id уровня)""" + id: Int! + + """статус, выдаваемый за достижение уровня""" + status: String! + + """вилка опыта на данном уровне""" + range: ExperienceLevelRange! + + """предыдущий уровень (Id предыдущего уровня)""" + previous: Int! + + """Код уровня""" + levelCode: Int! + + """""" + tenantShortName: String +} + +"""Диапазон опыта за уровень""" +type ExperienceLevelRange { + """id диапазона""" + id: ID! + + """id уровня""" + level: Int! + + """код уровня""" + levelCode: Int! + + """наименьшее количество опыта на данном уровне""" + leftBorder: Int! + + """максимальное количество опыта на данном уровне""" + rightBorder: Int! + + """Награды, выдаваемые за достижение данного уровня""" + awards: [Award!]! + + """ + Стикер-Аватар выдаваемый при достижении уровня + {null} в случае, если за достижения уровня не назначена выдача стикера + """ + avatar: Avatar + + """ + Часть стикер-фона выдаваемого при достижении уровня + {null} в случае, если за достижения уровня не назначена выдача стикер-фона + """ + bgStickerPart: BgStickerPart +} + +"""""" +input ExperienceLevelRangeInput { + """наименьшее количество опыта на данном уровне""" + leftBorder: Int! + + """максимальное количество опыта на данном уровне""" + rightBorder: Int! + + """ID наград, выдаваемых при достижении уровня""" + awardIds: [ID!]! + + """ + ID Стикер-Аватара выдаваемого при достижении уровня + {null} в случае, если за достижения уровня не назначена выдача стикера + """ + avatarId: Int + + """ + ID части стикер-фона выдаваемого при достижении уровня + {null} в случае, если за достижения уровня не назначена выдача стикер-фона + """ + bgStickerPartId: Int +} + +"""Условия начисления очков опыта за выполнения заданий""" +type ExperienceTaskType { + """""" + id: ID! + + """описание условия начисления опыта""" + description: String! + + """дополнительная информация""" + additionalInfo: String! + + """количество начисляемых очков опыта""" + power: Int! +} + +"""Информация о не завершенных в сорк Домашних Работах ученика""" +type ExpiredStudentHomeworksInfo { + """Список Домашних Работ для Ученика, разбитый по датам (в зоне школы)""" + homeworksByDate: [StudentHomeworksByDate!]! + + """Общее кол-во дат с не завершеными в сорк Домашними Работами""" + totalDatesWithExpiredHomeworksCount: Int! +} + +"""""" +type ExportQueries { + """Экспорт списка модулей Учителя по json модели данных""" + getTeacherModules( + """""" + sortingFields: [SortingField] + + """Фильтр по скоупу""" + filterScope: ScopeEnum + + """Фильтр по ID предметов""" + filterSubjects: [ID] + + """Фильтр по ID параллелей""" + filterStages: [ID] + + """Фильтры по длительности (от..до)""" + filterLaboriousnessFrom: Int + + """""" + filterLaboriousnessTo: Int + + """Фильтры по дате создания (от..до)""" + filterCreateTimeFrom: String + + """""" + filterCreateTimeTo: String + + """Фильтр по готовности для использования""" + filterReady: Boolean + + """Фильтр по соответствию текущему пользователю""" + filterForCurrentUser: Boolean + + """Фильтр по доступу""" + filterAccess: Boolean + + """Фильтр по импортированности модуля""" + filterImported: Boolean + + """Фильтр по атрибуту архивации""" + filterArchived: Boolean + + """Только созданные мной""" + filterIsCreatedByCurrentUser: Boolean + + """Тип выполнения экзамена(обыкновенный модуль, модуль для экзамена)""" + filterExecutionType: Int + + """Строка поиска""" + textSearch: String + + """ + Поиск строки поиска только в имени (название и автор). Без учета базовой идеи + """ + nameOnlyTextSearch: Boolean + + """Список модулей которые надо исключить из выдачи""" + filterExceptGoals: [ID] + + """Параметры пагинации""" + paging: PagingInput + + """Модель данных, содержащая наименования полей выгружаемой сущности""" + jsonModel: String! + ): String! +} + +"""""" +type ExtendedContentType { + """""" + contentType: AdditionalContentType! + + """""" + subtypes: [ContentSubtype!]! +} + +"""Урок по группе класса по предмету""" +type ExtendedLesson { + """""" + id: ID! + + """""" + teacher: TeacherCommonInfo! + + """""" + lessonNumber: Int! + + """""" + classroom: String! + + """""" + stageGroupName: String! + + """""" + isStageGroupIsIntergroup: Boolean! + + """""" + stageId: ID! + + """""" + subject: String! + + """""" + stageSubjectGroupId: ID! + + """""" + stageSubjectGroup: String! + + """""" + lessonStartTime: Time! + + """""" + lessonEndTime: Time! + + """""" + lessonNote: String + + """""" + onlineLessonLink: String + + """""" + stageGroups: [StageGroup!]! + + """Есть ли план урока""" + hasLessonPlans: Boolean! + + """Ид плана урока""" + lessonPlanId: ID + + """Комментарии к плану""" + lessonPlanNotes: [String!] + + """Является ли урок онлайн-уроком""" + isVideoLesson: Boolean + + """Тип видеоконференции""" + videoconferenceTypeId: ID + + """Опубликован ли урок""" + isPublished: Boolean + + """Архивирован ли урок""" + isArchived: Boolean + + """Есть ли хотя бы одна активная оценка по уроку""" + hasLessonLearningActivities: Boolean! + + """Есть ли отметки о посещаемости по уроку""" + hasVisitJournalCells: Boolean! +} + +"""Драфт урока по ГКпП""" +type ExtendedLessonDraft { + """Идентификатор драфта урока""" + lessonDraftId: ID! + + """Идентификатор учителя и его идентификатор пользователя""" + teacher: TeacherCommonInfo! + + """Номер урока""" + lessonNumber: Int! + + """Идентификатор интервала времени, в который проводится урок""" + lessonTimeslotId: ID! + + """Наименование кабинета""" + classroom: String! + + """Идентификатор кабинета""" + classroomId: ID! + + """Наименование класса""" + stageGroupName: String! + + """Идентификатор класса""" + stageGroupId: ID! + + """Является ли группа межклассовой""" + isStageGroupIsIntergroup: Boolean! + + """Идентификатор параллели, к которой относится группа""" + stageId: ID! + + """Наименование предмета""" + subject: String! + + """Идентификатор предмета""" + subjectId: ID! + + """Наименование ГКпП""" + stageSubjectGroup: String! + + """Идентификатор ГКпП""" + stageSubjectGroupId: ID! + + """Время начала урока""" + lessonStartTime: Time! + + """Время окончания урока""" + lessonEndTime: Time! + + """Данные о классе""" + stageGroups: [StageGroup!]! + + """Идентификатор здания""" + buildingId: ID! +} + +""" +Описание внешней системы для проверки заданий с типом "Проверка во внешней системе" +""" +type ExternalCheckingSystem { + """""" + code: String! + + """""" + name: String! + + """""" + sync: Boolean! +} + +"""информация по конкурсам""" +type ExternalCompetition { + """ID конкурса""" + checkBucketId: ID! + + """Название конкурса""" + learningProgramShortName: String! +} + +"""""" +type ExternalContentMutations { + """Загрузка SCORM пакетов""" + loadScorm(url: String!, taskType: String!, taskName: String!, subject: String, stage: String, packageName: String!): ExternalTask! +} + +"""""" +enum ExternalContentProviderEnum { + """""" + NONE + + """""" + ROS_UCHEBNIK + + """""" + SCORM + + """PHYSICON в будущем будет, возможно, аналогичен SCORM""" + PHYSICON + + """Интеграция с тренажерами""" + TRAINING_INTEGRATION +} + +"""""" +type ExternalContentQueries { + """получени списка ЭОР (строка поиска)""" + searchExternalTasks(search: String!, filter: SearchExternalTaskInput, sortingFields: [SortingField!], limit: Int, offset: Int, myStages: Boolean, archived: Boolean, contentProviderActive: Boolean): [ExternalTask!]! + + """получени кол-ва элементов по списку ЭОР (строка поиска)""" + searchExternalTasksCount(search: String!, filter: SearchExternalTaskInput, myStages: Boolean, archived: Boolean, contentProviderActive: Boolean): Int! + + """ + получение списка ЭОР (фильтр по полям), использовать searchExternalTasks + """ + getExternalTasks(externalTaskFilter: FilterExternalTaskInput!): [ExternalTask!]! @deprecated + + """ + Временно, пока нет привязки к кодам предметов, возвращаем просто строки с наименованиями + """ + getAllSubjects: [String!]! + + """ + Временно, пока нет привязки к кодам типов заданий, возвращаем просто строки с наименованиями + """ + getAllTaskTypes: [String!]! + + """""" + getAllStages: [String!]! + + """ + Возвращает расшифровку вида контента по shortcut (в будущем вид shortcut усложнится) + """ + decodeShortcut(shortcut: String!): DecodedContent! +} + +"""""" +type ExternalLearningMutations { + """Добавление новой учебной программы""" + createLearningProgram(name: String!, shortName: String!, type: LearningTypeEnum!): LearningProgram! + + """Изменение учебной программы""" + updateLearningProgram(learningProgramId: ID!, name: String!, shortName: String!, type: LearningTypeEnum!): LearningProgram! + + """Добавление направления в учебную программу""" + createLearningProgramDirection(directionInput: LearningProgramDirectionInput!): LearningProgramDirection! + + """Редактирование направления в учебную программу, изменение ролей""" + editLearningProgramDirectionRoles(learningProgramDirectionId: ID!, userRoles: [ROLES!]!): Boolean! + + """Изменение статуса школы участника программы в ENABLED""" + enableLearningProgramSchool(learningProgramSchoolId: ID!): Boolean! + + """Изменение времени активации школы участника программы""" + updatedLearningProgramSchoolDate(learningProgramSchoolId: ID!, dateEnable: Date!): Boolean! + + """ + Удаление школы участника программы (активные переходят в статус DISABLED) + """ + deleteLearningProgramSchool(learningProgramSchoolId: ID!): Boolean! + + """Удаление направления программы""" + removeLearningProgramDirection(learningProgramDirctionId: ID!): Boolean! + + """Сохранение списка администраторов программы""" + saveAdministrators(learningProgramId: ID!, userIdsAdd: [UUID!]!, userIdsRemove: [UUID!]!): Boolean! + + """Добавление школ в программу""" + createLearningProgramSchools(learningProgramId: ID!, schoolIdsAdd: [UUID!]!): Boolean! + + """Добавление школ в программу c фильтром""" + createLearningProgramSchoolsWithFilterWithoutIds(learningProgramSchoolInput: LearningProgramSchoolInput!, exceptSchoolIds: [UUID]): Boolean! + + """Сохранение проверяющих по региональным группам""" + saveRegionVerifierGroupUsers(regionVerifierGroupIds: [ID!]!, userIdsAdd: [UUID!]!, userIdsRemove: [UUID!]!): Boolean! + + """Создание школьной группы проверяющих""" + addSchoolVerifierGroupUsers(learningProgramId: ID!, schoolId: UUID!, subjectId: ID!, userIdsAdd: [UUID!]!): Boolean! + + """Изменение проверяющих по школьной группе""" + editSchoolVerifierGroupUsers(schoolVerifierGroupId: ID!, userIdsAdd: [UUID!]!, userIdsRemove: [UUID!]!): Boolean! + + """Удаление школьной группы проверяющих (возвращение регионального)""" + deleteSchoolVerifierGroup(schoolVerifierGroupId: ID!): Boolean! + + """Публикация программы""" + publishLearningProgram(learningProgramId: ID!): Boolean! + + """Публикация направлений""" + publishLearningProgramDirections(learningProgramDirectionIds: [ID!]!): Boolean! + + """Изменение глобального плана (шаблона плана для направления)""" + updateLearningDirectionGlobalPlanPattern(planGoalInputModels: [GlobalPlanGoalInput!]!, globalPlanId: ID!): GlobalPlan! + + """Миграция""" + migrate(schoolTag: String!): String! @deprecated(reason: "unusable") +} + +"""""" +type ExternalLearningQueries { + """Получение набора типов обучения""" + getLearningTypes: [LearningTypeEnum!]! + + """Получение программы по id""" + getLearningProgramById(learningProgramId: ID!): LearningProgram! + + """Получение программ по школе-организатору""" + getLearningProgramsByOrganizerSchoolId: [LearningProgram!]! + + """Получение списка школ участников программы""" + getLearningProgramSchoolsByParam(learningProgramId: ID!, regionName: String, schoolIdentifier: String, schoolName: String, showEditedOnly: Boolean, paging: PagingInput): LearningProgramSchoolsPage! + + """Получение списка школ для добавления в программу""" + getSchoolsForLearningProgram(learningProgramId: ID!, tag: String): [SchoolForLearningProgram!]! @deprecated(reason: "Use getSchoolsForLearningProgramWithFilter instead.") + + """ + Получение списка школ для добавления в программу c фильтром и пагинацией + """ + getSchoolsForLearningProgramWithFilter(learningProgramSchoolInput: LearningProgramSchoolInput!, paging: PagingInput): LearningProgramSchoolList! + + """Получение списка администраторов программы""" + getAdministrators(learningProgramId: ID!): [User!]! + + """Получение списка проверяющих по предмету""" + getSchoolVerifiers(subjectId: ID!): [SchoolVerifier!]! + + """Получение списка проверяющих по программе""" + getProgramVerifiers(learningProgramId: ID!, schoolId: UUID!): [ProgramVerifierGroups!]! + + """Верификация настроек программы""" + validateProgram(learningProgramId: ID!): ProgramValidation! + + """Верификация направления программы""" + validateDirection(learningProgramDirectionId: ID!): DirectionValidation! + + """Получение списка опубликованных активных программ по типу""" + getLearningProgramsActiveAndPublishedByType(type: LearningTypeEnum!): [LearningProgramSimply!]! +} + +"""Для внешних опросников (input)""" +input ExternalSurveyAnswerInput { + """строка в BASE64""" + htmlContent: String + + """строка в BASE64""" + jsonContent: String +} + +"""Описание внешнего задания""" +type ExternalTask { + """""" + id: ID! + + """""" + contentLoad: ContentLoad! + + """""" + contentProviderId: ID! + + """""" + taskType: String! + + """""" + taskTypeId: ID + + """""" + taskName: String! + + """""" + subject: String! + + """""" + subjectId: ID + + """""" + stage: Int! + + """""" + version: Float + + """""" + api: String + + """""" + hash: String + + """""" + jsonMeta: String + + """""" + externalId: String! + + """""" + url: String! + + """""" + path: String! + + """""" + config: String + + """короткая ссылка ЭОР (относительный путь)""" + shortcut: String! + + """""" + archived: Boolean! + + """продублировано из ContentProvider""" + logoUrl: String + + """""" + contentProviderActive: Boolean +} + +"""""" +type ExternalWork { + """""" + id: ID! + + """""" + name: String! + + """""" + mark: SchoolMark + + """""" + percentageMark: Float + + """""" + files: [File!]! +} + +"""""" +input ExternalWorkInput { + """""" + studentId: ID! + + """""" + stageSubjectId: ID! + + """""" + studyPeriodId: ID! + + """""" + markId: ID + + """""" + percentageMark: Float + + """""" + name: String! + + """""" + fileInputs: [FileInput!]! +} + +"""""" +input ExternalWorkV2Input { + """""" + studentId: ID! + + """""" + stageSubjectId: ID! + + """""" + studyPeriodId: ID! + + """""" + periodTypeId: ID + + """""" + markId: ID + + """""" + percentageMark: Float + + """""" + name: String! + + """""" + fileInputs: [FileInput!]! +} + +"""Любимый предмет ученика""" +type FavoriteSubject { + """ID любимого предмета ученика""" + id: Int! + + """Наименование любимого предмета""" + name: String! +} + +"""""" +type FeatureFlagsPerSchool { + """""" + schoolId: ID + + """""" + enabled: Boolean! +} + +"""""" +type Feedback { + """ID записи""" + id: ID! + + """Задание""" + task: Task! + + """Модуль""" + module: StudyModule + + """Автор""" + user: User! + + """Комментарий""" + comment: String + + """дата создания""" + createTime: Date + + """ИД вида оценки (что понравилось больше всего)""" + feedbackSubjectsId: [ID!] + + """ + Рейтинг + 1 = Дизлайк. 5 = Лайк + """ + rating: Int! +} + +"""Плашка с информация о проекте или курсе на экранах студента""" +type FeedbackAverageScore { + """Название метрики""" + categoryName: String + + """Тип метрики""" + categoryType: String @deprecated + + """Код метрики""" + categoryCode: String + + """Значение параметра""" + value: String +} + +""" +Критерии, по которым оценивается проверяющий p2p задания и сам процесс проверки +""" +enum FeedbackCategoryEnum { + """""" + REVIEWER_SHOWED_UP_ON_TIME + + """""" + REVIEWER_SHOWED_INTEREST_IN_YOUR_WORK + + """""" + REVIEWER_WAS_RIGOROUS + + """""" + REVIEWER_WAS_COURTEOUS +} + +""" +Оценка, которая может быть выставлена по каждому из критериев оценки p2p задания +""" +enum FeedbackCategoryValueEnum { + """""" + FAIL + + """""" + PROBABLY_FAIL + + """""" + PROBABLY_GOOD + + """""" + GOOD + + """""" + EXCELLENT +} + +"""S21. Форма для обратной связи""" +type FeedbackForm { + """ID формы для обратной связи""" + id: ID! + + """Тип формы""" + feedbackFormEnum: FeedbackFormEnum! + + """Название формы""" + name: String! + + """Вопросы с формы для обратной связи""" + feedbackFormQuestions: [FeedbackFormQuestion!]! +} + +"""S21. Тип формы опроса""" +enum FeedbackFormEnum { + """Успешная форма для попытки""" + SUCCESSFUL_ATTEMPT + + """Неуспешная форма для попытки""" + FAILED_ATTEMPT +} + +"""S21. Вопрос с формы для обратной связи""" +type FeedbackFormQuestion { + """ID вопроса формы для обратной связи""" + id: ID! + + """Номер вопроса на форме обратной связи""" + serialNumber: Int! + + """Заголовок вопроса на английском""" + titleEn: String! + + """Описание вопроса на английском""" + descriptionEn: String + + """Тип секции вопроса""" + feedbackSectionEnum: FeedbackSectionEnum! + + """Тип сущности ответа, ожидаемый от вопроса""" + typeValue: String! + + """Текст быстрого действия на английском""" + quickActionEn: String +} + +"""Отзыв от сотрудника""" +type FeedbackFromStaff { + """Название проекта""" + goalName: String! + + """Тип проверки""" + checkType: FilledChecklistCheckType! + + """Тип проекта""" + executionType: ModuleExecutionType! + + """ID проверяющего""" + reviewUserId: UUID! + + """Этап заполненного чек-листа с отзывом""" + filledChecklistStageEnum: FilledChecklistStageEnum! + + """Название команды, если это групповой проект""" + teamName: String + + """Отзыв на участников""" + feedbackOnParticipants: [FeedbackOnParticipant!]! +} + +"""""" +input FeedbackInput { + """Идентификатор задания""" + taskId: ID! + + """ + Идентификаторы вида оценки (что понравилось или не понравилось больше всего) + """ + feedbackSubjectsId: [ID!] + + """Комментарий""" + comment: String + + """Рейтинг""" + rating: Int! +} + +"""Отзыв на участника""" +type FeedbackOnParticipant { + """Участник""" + user: User! + + """Отзыв на участника""" + comment: String + + """Роль участника в команде""" + role: TeamRole +} + +"""S21. Тип секции у вопроса в опросе""" +enum FeedbackSectionEnum { + """Десяти бальная шкала""" + SCALE_10 + + """Текст""" + TEXT +} + +"""""" +type FeedbackStatistics { + """""" + limit: Int! + + """""" + available: Int! + + """""" + details: [FeedbackStatisticsDetail]! +} + +"""""" +type FeedbackStatisticsAverageScore { + """Количество P2P проверок""" + countFeedback: Int! + + """P2P. Средний балл по фитбэку""" + feedbackAverageScore: [FeedbackAverageScore] +} + +"""""" +type FeedbackStatisticsDetail { + """""" + rating: Int! + + """""" + count: Int! +} + +"""""" +type FeedbackSubject { + """""" + id: ID! + + """""" + description: String! + + """""" + requiresComment: Boolean! +} + +"""Данные о филде события""" +type FieldData { + """Имя поля""" + name: String! + + """Тип поля""" + type: EventFieldTypeEnum! + + """Опциональность поля""" + optional: Boolean! +} + +"""""" +type FieldValidationError { + """Название поля, которое не прошло валидацию""" + fieldName: String! + + """ + Сообщение, которое будет отображено при выделении поля (причина, почему валидацию не прошла успешно) + """ + message: String! +} + +"""""" +type File { + """""" + id: ID! + + """""" + fileName: String! + + """""" + filePath: String! + + """""" + fileSize: Int! + + """Байты""" + extension: FileExtensionEnum! + + """Файл помечен как удаленный""" + removed: Boolean! + + """""" + fileOrder: Int +} + +"""""" +enum FileExtensionEnum { + """""" + TXT + + """""" + DOC + + """""" + DOCX + + """""" + XLS + + """""" + XLSX + + """""" + PDF + + """""" + ODS + + """""" + ODT + + """""" + PPT + + """""" + PPTX + + """""" + JPG + + """""" + JPEG + + """""" + PNG + + """""" + GIF + + """""" + MP4 + + """""" + AVI + + """""" + MPG + + """""" + MP3 + + """""" + PAGES + + """""" + NUMBERS + + """""" + KEY + + """""" + MOV + + """""" + WAV + + """""" + AAC + + """""" + MKA + + """""" + M4A + + """""" + HEIC + + """""" + EV3 + + """""" + SVG + + """""" + BMP + + """""" + TIFF +} + +"""""" +input FileInput { + """""" + fileName: String! + + """""" + filePath: String! + + """""" + fileSize: Int! + + """Байты""" + extension: FileExtensionEnum! + + """""" + fileOrder: Int +} + +"""""" +type FilledChecklist { + """Идентификатор заполненного чек-листа""" + id: ID! + + """Идентификатор чек-листа""" + checklistId: ID! + + """Идентификатор проверяемого ответа на задание""" + studentAnswerId: ID! + + """Идентификатор проверяющего""" + reviewUserId: UUID! + + """Фактическое время начала проверки""" + startTimeCheck: DateTime! + + """Фактическое время окончания проверки""" + endTimeCheck: DateTime + + """Количество минут, затраченное на проверку""" + actualDurationCheck: Int + + """Оценки вопросов чек-листа""" + scoreQuestions: [ScoreQuestion]! + + """Комментарий""" + comment: String + + """Быстрое действие""" + quickAction: QuickAction + + """Полученнный при проверке балл""" + receivedPoint: Int + + """Набранный при проверке процент""" + receivedPercentage: Int + + """Данные по фидбэку""" + reviewFeedback: ReviewFeedback + + """Проверяющий""" + reviewer: User! + + """Чек-лист, по которому идет проверка""" + checklist: Checklist! + + """Ссылка на проект в gitlab с ответом ученика""" + gitlabStudentProjectUrl: GitlabLink @deprecated(reason: "Use solutionInfo.gitlabSolutionInfo.gitlabLink") + + """Информация о решение в соответствие с типом решения задания""" + solutionInfo: SolutionInfo + + """Информация о проекте""" + moduleInfoP2P: ModuleInfoP2P + + """Информация о прогрессе прохождения проверок""" + progressCheckInfo: ProgressCheckInfo + + """Информация о проверяемых""" + verifiableUsers: VerifiableUsers + + """Тип проверки, в рамках которой заполняется чеклист""" + checkType: FilledChecklistCheckType + + """Информация о видеозаписи проверки""" + onlineReview: OnlineReview + + """Этап заполненного чек-листа с отзывом""" + filledChecklistStageEnum: FilledChecklistStageEnum +} + +"""Типы проверки, в рамках которой заполняется челклист""" +enum FilledChecklistCheckType { + """ + Обычная проверка + Есть ограничения на кол-во пройденных проверок/кол-во проверок, указанное в конструкторе задания + """ + COMMON + + """ + Экстра проверка + По смыслу не отличается от обычной проверки, + за исключением отсутствия ограничения по кол-ву проверок в конструкторе задания + """ + EXTRA + + """ + Приоритетная проверка + Является определяющей проверкой при подсчете финальной оценки, т.к при наличии приоритетной проверки, + данные по другим проверкам при подсчете не учитываются + """ + PRIORITY +} + +""" +Заполненный чек-лист +DEPRECATED - use ChecklistFilledInput +""" +input FilledChecklistInput { + """Идентификатор заполненного чек-листа""" + filledChecklistId: ID! + + """Оценки вопросов чек-листа""" + scoreQuestions: [ScoreQuestionInput!]! + + """Флаг быстрого действия""" + quickAction: QuickAction + + """Комментарий""" + comment: String +} + +"""Этап заполненного чек-листа с отзывом""" +enum FilledChecklistStageEnum { + """Пустой чек-лист""" + EMPTY_CHECKLIST + + """Пустой отзыв, но заполненный чек-лист""" + EMPTY_FEEDBACK + + """Заполненный отзыв""" + FILLED_FEEDBACK +} + +"""""" +enum FilledChecklistStatusRecordingEnum { + """К чек-листу необходимо подгрузить видео онлайн проверки""" + FILE_REQUIRED + + """Видео онлайн проверки не требуется""" + FILE_NOT_REQUIRED +} + +"""""" +type FillingGapAnswerBody { + """Ответ""" + answers: [FillingGapAnswerPair!]! + + """""" + cards: [FillingGapAnswerCard!] +} + +"""""" +input FillingGapAnswerBodyInput { + """Ответ на виджет Заполнение пропусков""" + answers: [FillingGapAnswerPairInput!]! + + """""" + cards: [FillingGapAnswerCardInput!] +} + +""" +Карточка виджета "Заполнение пропусков" +""" +type FillingGapAnswerCard { + """UUID карточки""" + cardId: ID + + """Правильно/неправильно была расположена карточка""" + correct: Boolean + + """ID пропуска, в котором была расположена карточка""" + gapId: ID +} + +""" +Карточка в виджете "Заполнение пропусков" +""" +input FillingGapAnswerCardInput { + """ID карточки""" + cardId: ID + + """ID пропуска""" + gapId: ID +} + +"""""" +type FillingGapAnswerPair { + """Уникальный идентификатор пропуска""" + gapId: ID! + + """Значение для пропуска""" + value: String! + + """Правильно/неправильно""" + correct: Boolean! + + """Идентификатор варианта выбора заполнения пропуска""" + gapChoiceId: ID +} + +"""""" +input FillingGapAnswerPairInput { + """Уникальный идентификатор пропуска""" + gapId: ID! + + """Значение для пропуска""" + value: String! + + """ + Режим заполнения пропуска + Нужен будет для валидации корректного заполнения самого ответа + """ + mode: GapMode + + """Идентификатор варианта выбора заполнения пропуска""" + gapChoiceId: ID +} + +"""Описание фильтра отчета 'Обзор работы учителей' выгрузка в Excel""" +input FilterDescription { + """""" + filter: String! + + """""" + value: String! +} + +"""Для фильтра по описаниям заданий""" +input FilterExternalTaskInput { + """""" + contentLoadId: ID + + """""" + contentProviderId: ID + + """""" + taskType: String + + """""" + taskTypeId: ID + + """""" + taskName: String + + """""" + subject: String + + """""" + subjectId: ID + + """""" + stage: Int + + """""" + version: Float + + """""" + api: String + + """""" + hash: String + + """""" + jsonMeta: String + + """""" + externalId: String + + """""" + url: String + + """""" + path: String + + """""" + sortFields: [String] + + """""" + limit: Int + + """""" + offset: Int + + """""" + shortcut: String + + """""" + archived: Boolean + + """""" + contentProviderActive: Boolean +} + +"""""" +input FilterTags { + """тип тега для верхнего уровня (например, SUBJECT)""" + upLevelTagType: MediatekaTagType +} + +"""Коды ошибок""" +enum FinalMarkErrorCode { + """Группы студентов не найдены""" + NO_STAGE_GROUPS_FOUND + + """Аттестационные периоды не найдены""" + NO_ATTESTATION_PERIODS_FOUND +} + +"""""" +type FinalMarkLesson { + """Дата урока""" + date: Date! + + """Время начала урока""" + lessonStart: Time! + + """Время окончания урока""" + lessonEnd: Time! +} + +"""Предметы параллели""" +type FinalMarkStageSubject { + """Идентификатор предмета параллели""" + stageSubjectId: ID! + + """Наименование предмета""" + subjectName: String! +} + +"""Данные по финальным оценкам""" +type FinalMarksData { + """Предметы параллели""" + stageSubjects: [FinalMarkStageSubject!]! + + """Типы итоговых оценок""" + markTypes: [EJournalFinalStudentMarkType!]! + + """Итоговые оценки по графикам аттестационных периодов""" + attestationPeriodSetMarks: [AttestationPeriodSetFinalMarks!]! +} + +"""Ответ на запрос финальных оценок""" +type FinalMarksDataResponse { + """Данные""" + data: FinalMarksData + + """Успешность операции""" + isSuccess: Boolean! + + """Ошибки""" + error: FinalMarksError +} + +"""Модель ошибки""" +type FinalMarksError { + """Код ошибки""" + errorCode: FinalMarkErrorCode! +} + +"""""" +type FinalMarksQueries { + """Запрос финальных оценок""" + getFinalMarks(finalMarksRequest: FinalMarksRequest!): FinalMarksDataResponse! + + """Запрос списка академических годов школы""" + getAcademicYears: [AcademicYear!]! + + """Запрос текущих оценок""" + getCurrentMarks(currentMarksRequest: CurrentMarksRequest!): CurrentMarksResponse! + + """Запрос данных урока""" + getLesson(lessonId: ID!): FinalMarkLesson! +} + +"""Модель запроса финальных оценок""" +input FinalMarksRequest { + """Идентификатор пользователя ребенка""" + childUserId: ID + + """Идентификатор учебного года""" + academicYearId: ID + + """Идентификатор предмета параллели""" + stageSubjectId: ID +} + +"""Фильтр периодов, за которые ученикам выставляются итоговые оценки""" +input FinalPeriodFilter { + """Идентификатор периода (бизнес-сущности)""" + periodId: ID! + + """Тип периода""" + periodType: FinalPeriodType! +} + +"""Типы периодов, за которые ученикам выставляются итоговые оценки""" +enum FinalPeriodType { + """Учебный период""" + STUDY_PERIOD + + """Аттестационный период""" + ATTESTATION_PERIOD + + """Академический год""" + ACADEMIC_YEAR +} + +"""Типы итоговой оценки учеников""" +enum FinalStudentMarkType { + """Итоговая оценка за АП""" + ATTESTATION_PERIOD_FINAL_MARK + + """Итоговая годовая оценка""" + ACADEMIC_YEAR_FINAL_MARK + + """Итоговая экзаменационная оценка""" + EXAMINATION_FINAL_MARK + + """Итоговая аттестационная оценка""" + ATTESTATION_FINAL_MARK +} + +"""""" +type FindGitlabProjectsResponse { + """""" + gitlabProjects: [GitlabProjectShort!]! + + """""" + totalCount: Int! +} + +"""""" +type FixDdlResult { + """""" + created: Boolean! + + """""" + dropped: Boolean! + + """""" + error: String +} + +"""""" +type FixSliceResult { + """""" + processed: Int! + + """""" + skipped: Int! + + """""" + fixed: Int! +} + +"""""" +type FixStatus { + """""" + tmpTableExist: Boolean! + + """""" + wait: Int! + + """""" + skipped: Int! + + """""" + fixed: Int! + + """""" + error: String +} + +"""Типы форм контроля""" +enum FormControlTypeEnum { + """Текущая""" + CURRENT + + """Контрольная""" + CONTROL +} + +"""Информация о классном руководителе для публичных профилей""" +type FormMasterPublicData { + """""" + id: ID! + + """""" + firstName: String! + + """""" + middleName: String + + """""" + lastName: String! + + """""" + avatarUrl: String + + """""" + subjects: [Subject!]! +} + +"""""" +input FrontConfigurationInput { + """""" + propertyCode: String! + + """""" + defaultValue: String! +} + +"""""" +type FullAnswerBody { + """Ответ""" + answer: String! +} + +"""""" +input FullAnswerBodyInput { + """Развернутый ответ""" + answer: String! +} + +"""""" +type FunctionalRole { + """""" + userSchoolFunctionalRoleId: ID + + """""" + froleId: UUID + + """""" + code: ID! + + """""" + name: String! + + """""" + schoolId: UUID + + """""" + orgUnitId: UUID + + """""" + tenantId: UUID + + """""" + permissions: [Permission!]! + + """""" + dateStart: DateTime + + """""" + dateEnd: DateTime + + """""" + description: String + + """""" + isDefault: Boolean + + """""" + isEditable: Boolean + + """""" + isScopeGlobal: Boolean + + """""" + isScopeProduct: Boolean + + """""" + isScopeSchool: Boolean +} + +"""""" +type FunctionalRoleData { + """""" + id: String! + + """""" + description: String! +} + +"""""" +input FunctionalRoleInput { + """""" + code: ID! + + """""" + schoolId: ID + + """""" + orgUnitId: UUID + + """""" + dateStart: String + + """""" + dateEnd: String + + """""" + isScopeGlobal: Boolean + + """""" + isScopeProduct: Boolean + + """""" + isScopeSchool: Boolean +} + +"""""" +type FunctionalRoleSet { + """""" + functionalRoleSetId: ID + + """""" + name: String! + + """""" + orgUnitId: UUID + + """""" + orgUnit: OrganizationUnit + + """""" + description: String! + + """""" + functionalRoles: [FunctionalRole!]! + + """""" + role: ROLES + + """""" + isScopeGlobal: Boolean + + """""" + isScopeProduct: Boolean + + """""" + isScopeSchool: Boolean +} + +"""""" +input FunctionalRoleSetFroleInput { + """""" + froleId: UUID! + + """""" + isDefault: Boolean! +} + +"""""" +input FunctionalRoleSetInput { + """""" + functionalRoleSetId: ID + + """""" + name: String! + + """""" + orgUnitId: UUID! + + """""" + description: String! + + """""" + functionalRoleSetFroles: [FunctionalRoleSetFroleInput!]! + + """""" + role: ROLES! + + """""" + isScopeGlobal: Boolean + + """""" + isScopeProduct: Boolean + + """""" + isScopeSchool: Boolean +} + +"""Коалиция""" +type GameCoalition { + """""" + id: ID! + + """""" + name: String! + + """""" + stageId: Int! + + """""" + stage: Stage! + + """""" + avatarUrl: String! + + """""" + coalitionBackgroundId: Int! + + """""" + backgroundUrl: String! + + """""" + backgroundUrlBig: String! + + """""" + masterUserId: UUID! + + """""" + masterAvatarId: Int! + + """""" + masterAvatarImgUrl: String! + + """""" + masterUser: User! + + """""" + color: String! + + """""" + memberCount: Int! + + """""" + schoolId: UUID! + + """ + Текущий турнир, в котором учавствует коалиция + {null} если коалиция не учавствует в турнирах + """ + currentTournament: CoalitionTournament + + """Привязана ли коалиция к турнирам""" + hasTournaments: Boolean! +} + +"""Устарело, использовать GameCoalitionInputV2""" +input GameCoalitionInput { + """""" + id: ID + + """""" + name: String! + + """""" + stageId: Int! + + """""" + avatarUrl: String! + + """""" + backgroundUrl: String! + + """""" + masterUserId: UUID! + + """""" + color: String! +} + +"""Устарело, использовать GameCoalitionInputV3""" +input GameCoalitionInputV2 { + """""" + id: ID + + """""" + name: String! + + """""" + stageId: Int! + + """""" + avatarUrl: String! + + """""" + coalitionBackgroundId: Int! + + """""" + masterUserId: UUID! + + """""" + color: String! +} + +"""""" +input GameCoalitionInputV3 { + """""" + id: ID + + """""" + name: String! + + """""" + stageId: Int! + + """""" + avatarUrl: String! + + """""" + coalitionBackgroundId: Int! + + """""" + masterUserId: UUID! + + """""" + masterAvatarId: Int! + + """""" + color: String! +} + +"""Коалиция""" +type GameCoalitionV2 { + """""" + id: ID! + + """""" + name: String! + + """""" + avatarUrl: String! + + """""" + coalitionBackgroundId: Int! + + """""" + backgroundUrl: String! + + """""" + backgroundUrlBig: String! + + """""" + masterUserId: UUID! + + """""" + masterAvatarId: Int! + + """""" + masterAvatarImgUrl: String! + + """""" + color: String! + + """""" + membersCount: Int! + + """""" + schoolId: UUID! + + """""" + stage: Stage! + + """ + информация о положении дел в текущем турнире(очки, доп. очки и тд.), нуль если текущего турнира нет + """ + coalitionTournament: CoalitionTournament + + """информация о турнире, нуль если текущего турнира нет""" + tournament: GameTournament +} + +"""Турнир""" +type GameTournament { + """""" + id: ID! + + """""" + gameCoalitions: [GameCoalition!]! + + """""" + coalitionPoints: [CoalitionTournamentRank!]! + + """""" + stageId: ID! + + """""" + stage: Stage + + """""" + timeStart: DateTime! + + """""" + timeEnd: DateTime! + + """""" + name: String! + + """""" + tournamentAwardDescription: String + + """""" + schoolId: UUID! + + """""" + isActive: Boolean! + + """""" + timeClosed: DateTime + + """""" + daysToEnd: Int +} + +"""""" +input GameTournamentInput { + """""" + id: ID + + """""" + gameCoalitionIds: [ID!] + + """""" + stageId: ID! + + """""" + timeStart: DateTime! + + """""" + timeEnd: DateTime! + + """""" + name: String! + + """""" + tournamentAwardDescription: String +} + +"""""" +type GamificationMutations { + """""" + setExperienceLevelShowed: Boolean! + + """Надеть шмотку""" + dressEquipment(equipmentId: ID!): Boolean! + + """Снять шмотку""" + undressEquipment(equipmentId: ID!): Boolean! + + """Купить аватар(скин)""" + buyAvatar(avatarId: ID!): Boolean + + """Установить флаг просмотра достижений за задания""" + setHistoryShowed(historyId: ID!): Boolean! + + """Назначить награды за выполнения модулей""" + setModuleAwards(moduleId: ID!, moduleAwards: [ModuleAwardInput!]!): Boolean! + + """Создание нового уровня с константами""" + createNextDeadlineGameLevel(level: DeadlineGameLevelInput!): DeadlineGameLevel! + + """ + Изменить константы для уровня игры "Дедлайн" + """ + updateDeadlineGameAttributes(levelId: Int!, attributes: String!): Boolean! + + """Сохранение результата игры""" + saveDeadlineGameResult(result: DeadlineGameResultInput!): Boolean! + + """Сохранение ответа пользователя""" + saveUserTestAnswer(testId: ID!, answerContent: String!): UserTestAnswer! +} + +"""""" +type GamificationQueries { + """""" + getAvatarKinds: [AvatarKind!]! + + """""" + getAvatarGroups: [AvatarGroup!]! + + """""" + getAvailableAvatars: [Avatar!]! + + """Условия выдачи наград системой""" + getAwardConditionTypes: [AwardCondition!]! + + """Виды бейджей""" + getBadgeKinds: [BadgeKind!]! + + """Механики назначения наград""" + getAwardAssignmentTypes: [AssignmentType!]! + + """Справочник уровней наград""" + getAllAwardLevels: [AwardLevel!]! + + """""" + getExperienceLevelRanges: [ExperienceLevelRange!]! + + """""" + getExperienceTaskTypes: [ExperienceTaskType!]! + + """""" + getSoftSkillTypes: [SoftSkillType!]! + + """Список наград, полученных учеником за несколько выполнений задания""" + getUserHistoriesForTask(taskId: ID!): [History!]! + + """ + Совокупность наград, полученных учеником за последнее выполнение задания + """ + getLastUserHistoryForTask(taskId: ID!): History + + """Запрос констант игры "Дедлайн" для всех уровней""" + getDeadlineGameLevels: [DeadlineGameLevel!]! + + """ + Запрос лучшего результата игры пользователя + {null} если пользователь еще не играл + """ + getMyBestDeadlineGameResult: DeadlineGameResult + + """ + Запрос последнего результата игры пользователя + {null} если пользователь еще не играл + """ + getMyLastDeadlineGameResult: DeadlineGameResult + + """Запрос конфигурации игры""" + getDeadlineGameConfiguration: DeadlineGameConfiguration! + + """ + Возвращает рендомный ID из списка, который задан в конфигурации (deadline.game.test.tasks.id) + {null} если список не задан + """ + getTaskIdForDeadlineGameTest: ID + + """Получить тип теста по имени""" + getUserTestTypeIdByName(testTypeName: String!): UserTestType + + """ + Получить список параметров тестов для учеников в виде JSON по имени типа + """ + getUserTestContentByTypeName(testTypeName: String!): UserTestContent + + """Получить последний ответ для учеников в виде JSON по имени типа""" + getLastUserTestAnswerContentByTestTypeName(testTypeName: String!): UserTestAnswerContent +} + +"""Перечисляемый тип для режима виджета""" +enum GapMode { + """Заполнение пропуска из выпадающего списка""" + DROPDOWN + + """Заполнение пропуска методом перетаскивания""" + DRAG_AND_DROP + + """Заполнение методом ввода""" + INPUT +} + +"""Пол""" +enum Gender { + """""" + MALE + + """""" + FEMALE + + """""" + OTHER +} + +""" +Ответ по запросу успеваемости класса +Нужен для возможности сообщить об ошибке, если в результате фильтров нет данных, не выбрасывая исключение +""" +type GetClassSubjectPerformanceResponse { + """null, если есть ошибка""" + classSubjectPerformance: ClassSubject + + """null, если данные сагрегировались""" + errorMessage: ClassSubjectPerformanceErrorEnum +} + +"""Результат запроса групп класса по предмету по фильтрам""" +type GetClassSubjectsByFiltersResponse { + """Группы класса по предмету, подходящие по фильтрам""" + classSubjects: [ClassSubject!]! + + """ + Количество групп класса по предмету, подходящие по фильтрам, вне зависимости от пагинации + """ + totalCount: Int! +} + +"""""" +type GetJournalCellsResponse { + """""" + students: [Student!]! + + """""" + studentsInGroup: [StudentsInGroup] + + """""" + lessons: [LessonSet!]! + + """""" + cellsMap: [JournalCellsMap!]! +} + +"""""" +type GetJournalNotificationsResponseModel { + """""" + recalculating: Boolean! + + """""" + notificationId: ID +} + +"""""" +type GetModulesResponse { + """найденные модули""" + studyModuleModels: [StudyModule!]! + + """количество модулей соответствующих фильтру""" + count: Int! +} + +""" +Результат работы запроса по списокам регионов, в которых пользователь назначен как проверяющий учитель +(фроль Учитель для внешних школ) с сортировкой +""" +type GetMyRegionsByTeacherTrainingResponse { + """Регионы""" + regions: [Region!]! + + """Общее кол-во""" + totalCount: Int! +} + +""" +Возвращает список школ, в которых пользователь назначен проверяющим учителем (фроль Учитель для внешних школ) с сортировкой +""" +type GetMySchoolsByTeacherTrainingResponse { + """Школы""" + schools: [SafeSchool!]! + + """Общее кол-во""" + totalCount: Int! + + """Дополнительная информация о школе""" + schoolAdditionalInformation: [SchoolAdditionalInformation!]! +} + +"""Результат запроса настроек для определенного раздела""" +type GetSchoolSelfConfigurationSectionResponse { + """Данные о разделе настроек""" + data: SchoolSelfConfigurationSection + + """Признак успешности выполнения запроса""" + isSuccess: Boolean! + + """Описание ошибки, возникшей в ходе выполнения запроса""" + error: SchoolSelfConfigurationError +} + +"""""" +type GetStageSubjectGroupStudentsByYearResponse { + """""" + studentsInGroup: [StudentsInGroup]! + + """""" + studyPeriods: [StudyPeriod]! + + """""" + studentWasInGroupMap: [StringBooleanMapEntry!]! +} + +"""""" +type GetStudentRolesResponse { + """найденные роли в контексте студента""" + studentRoles: [StudentRole!]! + + """количество ролей соответствующих фильтру""" + count: Int! +} + +"""""" +type GetStudentTasksDashboardResponse { + """найденные Задания в контексте студента""" + studentTasks: [StudentTask!]! + + """количества заданий учеников с группировкой по статусу задания""" + studentTaskQuantity: [TaskCardsStatusesWithQuantity!]! +} + +""" +Сгруппированные по определенному ключу StudentTask'и +Например по студентам: [Абрамов_Лев.stage_subject_subgroup_student_id: [его StudentTask'и], Егорова_Валерия.stage_subject_subgroup_student_id: [ее StudentTask'и]] +""" +type GetStudentTasksGroupedResponse { + """сгруппированные по ключу StudentTask'и""" + studentTaskGroups: [StudentTaskGroup!]! + + """ + количество групп, соответствующих фильтру + если группировка NONE, то count = [studentTasks].size() + """ + count: Int! +} + +"""""" +type GetStudentTasksResponse { + """найденные Задания в контексте студента""" + studentTasks: [StudentTask!]! + + """количество заданий соответствующих фильтру""" + count: Int! +} + +"""""" +type GetVisitJournalRulesResponse { + """""" + student: Student! + + """""" + visitJournalRules: [VisitJournalRule!]! +} + +"""Сообщение GigaChat, отправленное пользователем или полученное в ответ""" +input GigaChatMessageInput { + """текст сообщения""" + content: String! + + """роль автора сообщения - пользователь или ассистент (GigaChat)""" + role: GigaChatRoleEnum! +} + +"""Ответ GigaChat""" +type GigaChatResponse { + """текст ответа""" + content: String! + + """ + приложенное изображение (если запрос содержал "нарисуй...") в формате jpeg, закодированное base64, необязательное поле + """ + imgData: String +} + +"""Роль отправителя сообщения GigaChat""" +enum GigaChatRoleEnum { + """Пользователь""" + USER + + """Ассистент (GigaChat)""" + ASSISTANT +} + +"""Тип CI/CD в проекте гитлаба""" +enum GitlabCiCdType { + """приватные пайплайны""" + PRIVATE + + """ci/cd выключен""" + DISABLED + + """ci/cd включен""" + ENABLED +} + +"""Коммит в репозитории gitlab""" +type GitlabCommit { + """Идентификатор коммита в репозитории gitlab""" + id: String! + + """Заголовок коммита в репозитории gitlab""" + title: String + + """Сообщение коммита в репозитории gitlab""" + message: String! + + """Ссылка коммита в репозитории gitlab""" + webUrl: String! + + """Сокращенный идентификатор коммита в репозитории gitlab""" + shortId: String! + + """Дата коммита в репозитории gitlab""" + createAt: Date! + + """ + Список родительскиъ коммиитов (по идентификаторам) в репозитории gitlab + """ + parentIds: [String!] + + """Имя автора коммита в репозитории gitlab""" + authorName: String + + """Дата авторства коммита в репозитории gitlab""" + authoredDate: Date + + """Электронный адрес автора коммита в репозитории gitlab""" + authorEmail: String + + """Имя коммитера в репозитории gitlab""" + committerName: String + + """Электронный адрес коммитера в репозитории gitlab""" + committerEmail: String + + """Дата коммита в репозитории gitlab""" + committedDate: Date +} + +"""docker image в gitlab""" +type GitlabDockerImage { + """идентфикатор образа""" + id: ID! + + """название пакета автотестов""" + name: String! + + """путь в гитлабе до образа""" + path: String! + + """проект к которому привязан данный образ""" + gitlabProjectId: ID! + + """абсолютный путь до образа""" + location: String! + + """время создания образа""" + createTime: DateTime! + + """время, с которого этот образ может быть почищен системой""" + cleanupPolicyTime: DateTime +} + +"""Файл из gitlab репозитория""" +type GitlabFile { + """Имя файла в репозитории gitlab""" + fileName: String! + + """Путь файла в репозитории gitlab""" + filePath: String! + + """Рпзмерп файла в репозитории gitlab""" + size: Int! + + """Encoding файла в репозитории gitlab""" + encoding: String! + + """Контент файла в репозитории gitlab""" + content: String! + + """Бранча файла в репозитории gitlab""" + reference: String! + + """Блоб файла в репозитории gitlab""" + blobId: String + + """ + Идентификатор коммита при котором был загружен файл в репозиторий gitlab + """ + commitId: String + + """Последний коммит на изменение файла в репозитории gitlab""" + lastCommitId: String +} + +"""Статус загрузки файла в gitlab репозиторий""" +type GitlabFileCreationStatus { + """Путь gitlab по которому загружен файл""" + filePath: String! + + """Бранча gitlab в которую загружен файл""" + branch: String! +} + +"""Файловый шаблон в gitlab""" +type GitlabFileTemplate { + """ключ шаблона""" + key: String! + + """"значение" шаблона""" + name: String! +} + +"""Ссылки на проект в гитлаб""" +type GitlabLink { + """Идентификатор проекта в гитлаб""" + id: Int! + + """Наличие открытых Merge-request в проект""" + hasOpenedMR: Boolean! + + """SSH-ссылка для клонирования""" + sshLink: String! + + """HTTP-ссылка для открытия в интерфейсе гитлаб""" + httpsLink: String! + + """Токен для раннеров""" + runnersToken: String! +} + +"""Ссылки на проект в гитлаб""" +type GitlabLinkWithStatus { + """Идентификатор проекта в гитлаб""" + id: Int! + + """SSH-ссылка для клонирования""" + sshLink: String! + + """HTTP-ссылка для открытия в интерфейсе гитлаб""" + httpsLink: String! + + """флаг готовности проекта к клонированию""" + readyToUse: GitlabProjectLinksReadyToUseStatus! + + """текущее кол-во рестартов форка проекта в гитлабе""" + restartsCounter: Int +} + +"""Ссылки на проект в гитлаб со статусом готовности проекта""" +type GitlabLinksWithReadinessStatus { + """Идентификатор студенческого ответа""" + studentAnswerId: Int! + + """флаг готовности проекта к клонированию""" + status: GitlabProjectLinksReadyToUseStatus! + + """Идентификатор проекта в гитлаб""" + gitlabProjectId: Int + + """SSH-ссылка для клонирования""" + sshLink: String + + """HTTP-ссылка для открытия в интерфейсе гитлаб""" + httpsLink: String + + """текущее кол-во рестартов форка проекта в гитлабе""" + hasOpenedMR: Boolean +} + +"""Неймспейсы в gitlab""" +type GitlabNamespace { + """Идентификатор неймспейса в gitlab""" + namespaceId: ID! + + """Ия неймспейса в gitlab""" + name: String! + + """Идентификатор родительского неймспейса в gitlab""" + parentId: String + + """Путь неймспейса в gitlab""" + path: String + + """Тип неймспейса в gitlab""" + kind: String +} + +"""""" +type GitlabPipeline { + """""" + id: ID! + + """""" + status: String! + + """""" + url: String! + + """""" + ref: String! +} + +"""Gitlab проект""" +type GitlabProject { + """Идентификатор гитлаб проекта""" + projectId: ID! + + """Описание проекта с gitlab""" + description: String + + """Название проекта в gitlab""" + name: String! + + """Полный путь (url) до проекта в gitlab""" + path: String! + + """Видимость проекта""" + visibility: String + + """Флаг показывающий архивирован ли проект в gitlab""" + archived: Boolean! + + """Флаг показывающий пустой ли репозиторий в gitlab""" + emptyRepo: Boolean! + + """Дата создания проекта в gitlab""" + createdAt: Date + + """Дефолтная бранча в gitlab репозитории""" + defaultBranch: String + + """Статус экспорта проекта из gitlab (меняется после запуска экспорта)""" + exportStatus: String + + """Неймспейс проекта в gitlab""" + namespace: GitlabNamespace + + """Ссылки данного проекта в gitlab""" + links: GitlabProjectLink +} + +"""""" +type GitlabProjectIdsExistenceResponse { + """""" + foundIds: [Int!]! + + """""" + notFoundIds: [Int!]! +} + +"""Проектные ссылки в gitlab""" +type GitlabProjectLink { + """Ссылка на проект в gitlab""" + self: String + + """Ссылка на issues проекта в gitlab""" + issues: String + + """Ссылка на labels проекта в gitlab""" + labels: String + + """Ссылка на события проекта в gitlab""" + events: String + + """Ссылка на членов проекта в gitlab""" + members: String + + """Ссылка на ПРы проекта в gitlab""" + mergeRequests: String + + """Ссылка на барнчи проекта в gitlab""" + repoBranches: String + + """Ссылка API (доступная после экспорта проекта из gitlab)""" + apiUrl: String + + """Ссылка WEB (доступная после экспорта проекта из gitlab)""" + webUrl: String +} + +"""Тип готовности импортированного проекта""" +enum GitlabProjectLinksReadyToUseStatus { + """не готов""" + NOT_READY + + """готов""" + READY + + """импорт провален""" + FAILED + + """перезапущен форк""" + RESTARTED +} + +"""""" +type GitlabProjectShort { + """""" + login: String! + + """""" + projectName: String! + + """""" + goalExecutionTypeId: Int! + + """""" + createdAt: Date! + + """""" + gitlabProjectId: Int! +} + +"""""" +type GitlabProjectsExcelFile { + """""" + fileName: String! + + """""" + base64Data: String + + """""" + url: String +} + +"""Тэг репозитория в gitlab""" +type GitlabRepositoryTag { + """Название тэга в репе gitlab""" + name: String! + + """Сообщение тэга в репе gitlab""" + message: String + + """Таргетирование тэга в репе gitlab""" + target: String! + + """Релизная версия тэга в репе gitlab""" + release: String + + """Флаг скрытости тэга в репе gitlab""" + protectedFlag: Boolean! + + """Коммит при создании тэга в репе gitlab""" + commit: GitlabCommit +} + +"""Респонс с гитлаб API в виде строки""" +type GitlabResponseMessage { + """""" + message: String! +} + +"""""" +type GitlabSolutionInfo { + """Ссылка на проект в gitlab с ответом ученика""" + gitlabLink: GitlabLink! +} + +"""Пользователь gitlab""" +type GitlabUser { + """Идентификатор пользователя в gitlab""" + id: ID! + + """Имя пользователя в gitlab""" + name: String! + + """Username пользователя в gitlab""" + username: String! + + """Статус активности пользователя в gitlab""" + state: String + + """Ссылка на картинку профиля поьзователя в gitlab""" + avatarUrl: String + + """Ссылка на профайл пользователя в gitlab""" + webUrl: String! +} + +"""""" +enum GitlabUserAccessLevel { + """""" + GUEST + + """""" + REPORTER + + """""" + DEVELOPER + + """""" + MAINTAINER + + """""" + OWNER + + """""" + NO_ACCESS +} + +"""Награждение пользователя""" +type Giving { + """Тип награждения""" + givingType: GivingType! + + """Когда наградили""" + date: DateTime! + + """ + Если награждали коинами или поинтами здесь будет значение(5, 100, -20), если бейджем то будет название бейджа + """ + value: String! + + """Кто награждал""" + giverLogin: String! + + """Комментарий при награждении""" + comment: String + + """ + Если награждали бейджем, тут будет информация о наградах полученных вместе с этим бейджем. + """ + givingBadge: GivingBadge +} + +""" +Бейдж выданный пользователю(все числа тянутся из исторических таблиц, а не из текущих настроек) +""" +type GivingBadge { + """Какой уровень ачивки был получен""" + awardLevelName: String! + + """Какого типа ачивка была получена""" + badgeKindName: String! + + """Сколько было получено опыта""" + experience: Int + + """Сколько было получено игровых монет""" + coins: Int + + """Сколько было получено очков коалиций""" + coalitionPoints: Int + + """Сколько было получено prp""" + prp: Int + + """Сколько было получено crp""" + crp: Int + + """Сколько и какого навыка было получено""" + softSkills: [AwardBountySoftSkillPower!] +} + +"""Типы награждений чем-то, которые может получать пользователь""" +enum GivingType { + """""" + COINS + + """""" + COALITION_POINTS + + """""" + AWARDS +} + +"""Глобальный курс""" +type GlobalCourse { + """Идентификатор глоабльного курса""" + globalCourseId: ID! + + """Название курса""" + courseName: String! + + """Статус курса""" + isPublished: Boolean! + + """Цели курса""" + courseGoals: [GlobalCourseGoal!]! + + """Количество проектов""" + projectCount: Int! + + """Идентификатор предмета""" + subjectId: ID! + + """Тип курса""" + courseType: CourseType! + + """Тип настройки весов для проектов в курсе""" + isAutoWeightsSetting: Boolean +} + +"""Цели глобального курса""" +type GlobalCourseGoal { + """Идентификатор цели глобального курса""" + globalCourseGoalId: ID! + + """Идентификатор цели курса""" + goalId: ID! + + """Название цели""" + goalName: String! + + """ + "Начать с ..." + """ + beginFrom: Int! + + """ + "Часы на проект" + """ + projectHours: Int! + + """ + "Регистрация" + """ + signUpFrom: Int! + + """ + "Проверка" + """ + checkFrom: Int! + + """Просмотр контента""" + isContentAvailable: Boolean! + + """Порядковый номер цели""" + order: Int! + + """Имя абстрактного глобального предмета""" + subjectName: String! + + """Ожидаемая трудоемкость в часах""" + laboriousness: Int! + + """Тип выполнения""" + executionType: ModuleExecutionType + + """дедлайн проекта""" + deadlineFree: Boolean +} + +"""Модель ввода для целей глобального курса""" +input GlobalCourseGoalInput { + """Идентификатор цели глобального курса""" + globalCourseGoalId: ID + + """Идентификатор цели""" + goalId: ID! + + """ + "Начать с ..." + """ + beginFrom: Int! + + """ + "Часы на проект" + """ + projectHours: Int! + + """ + "Регистрация" + """ + signUpFrom: Int! + + """ + "Проверка" + """ + checkFrom: Int! + + """Просмотр контента""" + isContentAvailable: Boolean! + + """Порядковый номер цели""" + order: Int! + + """дедлайн проекта""" + deadlineFree: Boolean +} + +"""Результат поиска глобальных курсов по заданным фильтрам""" +type GlobalCourseSearchResult { + """Количество найденных курсов""" + count: Int! + + """Список найденных курсов по переданным фильтрам""" + courses: [GlobalCourseView!] +} + +"""Представление глобального курса в списке курсов""" +type GlobalCourseView { + """Идентификатор глобального курса""" + globalCourseId: ID! + + """Признак опубликованности курса""" + isPublished: Boolean! + + """Название курса""" + name: String! + + """Тип курса""" + courseType: CourseType! + + """Количество элементов, которые содержит курс""" + itemCount: Int! + + """Максимальный опыт за прохождения курса""" + experience: Int + + """ + Наименование сущностей, на которые назначен курс, сгруппированных по типу + Инициализация происходит только по необходимости в GlobalCourseResolver#getAssignedEntitiesNamesGroupedByType() + """ + assignedEntitiesNamesGroupedByType: [CourseAssignedEntitiesNamesByType!]! + + """Дата последнего изменения курса""" + lastModifyTime: DateTime + + """Список привязанных к курсу тегов""" + contentTags: [ContentTag!]! +} + +"""Глобальный план""" +type GlobalPlan { + """Идентификатор глоабльного плана""" + globalPlanId: ID! + + """Название параллели""" + stageName: String + + """Название предмета""" + subjectName: String + + """Статус плана""" + isPublished: Boolean + + """Цели плана""" + planGoals: [GlobalPlanGoal!]! + + """Количество проектов""" + projectCount: Int! + + """Идентификатор параллели""" + stageId: ID! + + """Идентификатор предмета""" + subjectId: ID! +} + +"""Цели глобального плана""" +type GlobalPlanGoal { + """Идентификатор элемента глобального плана""" + globalPlanGoalId: ID! + + """Идентификатор цели""" + goalId: ID + + """Идентификатор глобального курса""" + globalCourseId: ID + + """Название цели""" + goalName: String + + """Тип проекта ш21 (групповой, индивидуальный)""" + assignmentType: TaskAssignmentEnum @deprecated(reason: "Под удаление. Используйте ModuleExecutionType") + + """ + "Начать с ..." + """ + beginFrom: Int! + + """ + "Часы на проект" + """ + projectHours: Int + + """ + "Регистрация" + """ + signUpFrom: Int! + + """ + "Проверка" + """ + checkFrom: Int + + """Просмотр контента""" + isContentAvailable: Boolean! + + """Порядковый номер цели""" + order: Int! + + """Имя абстрактного глобального предмета""" + subjectName: String + + """Ожидаемая трудоемкость в часах""" + laboriousness: Int + + """Максимальное количество баллов за выполнение проекта""" + point: Int + + """Тип выполнения""" + executionType: ModuleExecutionType + + """Флаг, указывающий на игнорирование любых дедлайнов для модуля""" + deadlineFree: Boolean! + + """Тип курса""" + courseType: CourseType + + """Количество проектов в курсе""" + courseProjectCount: Int + + """Настройки формирования команд""" + teamSettings: TeamSettings + + """В курсе есть проект без дедлайнов и со случайным формированием команды""" + hasDeadlineFreeRandomTeam: Boolean +} + +"""Модель ввода для целей глобального плана""" +input GlobalPlanGoalInput { + """Идентификатор цели глобального плана""" + globalPlanGoalId: ID + + """Идентификатор цели""" + goalId: ID + + """Идентификатор глобального курса""" + globalCourseId: ID + + """ + "Начать с ..." + """ + beginFrom: Int! + + """ + "Часы на проект" + """ + projectHours: Int + + """ + "Регистрация" + """ + signUpFrom: Int! + + """ + "Проверка" + """ + checkFrom: Int + + """Просмотр контента""" + isContentAvailable: Boolean! + + """Порядковый номер цели""" + order: Int! + + """Флаг, указывающий на игнорирование любых дедлайнов для модуля""" + deadlineFree: Boolean! +} + +"""""" +type GlobalPlanMutations { + """ + -----------------------------Мутации бизнес админа----------------------------- + Сохранение настроек условий фильтрации для модуля (проекта, цели) в плане на класс + """ + saveEvaluationRulesForStageSubjectGroupPlan(stageSubjectGroupPlanGoalId: ID!, conditionType: ConditionType!, evaluationRules: [EvaluationRuleGroupInput!]!): [EvaluationRuleGroup!]! + + """ + Сохранение настроек условий фильтрации для курса (группы проектов) в плане на класс + """ + saveCourseEvaluationRulesForStageSubjectGroupPlan(stageSubjectGroupPlanCourseId: ID!, conditionType: ConditionType!, evaluationRules: [EvaluationRuleGroupInput!]!): [EvaluationRuleGroup!]! + + """ + Сохранение настроек условий фильтрации для модуля (проекта, цели) в локальном курсе + """ + saveEvaluationRulesForLocalCourseGoal(localCourseGoalId: ID!, conditionType: ConditionType!, evaluationRules: [EvaluationRuleGroupInput!]!): [EvaluationRuleGroup!]! + + """Сохранение параметров команды в модуле плана на параллель""" + saveTeamSettingsInStageSubjectPlanGoal(stageSubjectPlanGoalId: ID!, teamSettings: TeamSettingsInput!, isMulticampusEnabled: Boolean): Boolean! + + """Сохранение параметров команды в модуле плана на класс""" + saveTeamSettingsInStageSubjectGroupPlanGoal(stageSubjectGroupPlanGoalId: ID!, teamSettings: TeamSettingsInput!, isMulticampusEnabled: Boolean): Boolean! + + """Сохранение параметров команды в модуле локального курса""" + saveTeamSettingsInLocalCourseGoal(localCourseGoalId: ID!, teamSettings: TeamSettingsInput!, isMulticampusEnabled: Boolean): Boolean! +} + +"""""" +type GlobalPlanQueries { + """ + -----------------------------Запросы бизнес админа----------------------------- + Запрос настроек условий заданного типа для модуля (проекта, цели) в плане на класс + """ + loadTaskEvaluationRuleGroupsFromStageSubjectGroupPlan(stageSubjectGroupPlanGoalId: ID!, conditionType: ConditionType!): EvaluationRuleGroupsWithEquivalentFlag! + + """ + Запрос настроек условий заданного типа для курса (группы проектов) в плане на класс + """ + loadCourseEvaluationRuleGroupsFromStageSubjectGroupPlan(stageSubjectGroupPlanCourseId: ID!, conditionType: ConditionType!): EvaluationRuleGroupsWithEquivalentFlag! + + """Запрос параметров команды для модуля из плана на параллель""" + getTeamSettingsFromStageSubjectPlanGoal(stageSubjectPlanGoalId: ID!): TeamSettings + + """Запрос группы параметров комманды для проекта из плана на параллель""" + getTeamSettingsGroupFromStageSubjectPlanGoal(stageSubjectPlanGoalId: ID!): TeamSettingsGroupWithEquivalentFlag! + + """Запрос параметров команды для модуля из плана на класс""" + getTeamSettingsFromStageSubjectGroupPlanGoal(stageSubjectGroupPlanGoalId: ID!): TeamSettings + + """Запрос группы параметров комманды для проекта из плана на класс""" + getTeamSettingsGroupFromStageSubjectGroupPlanGoal(stageSubjectGroupPlanGoalId: ID!): TeamSettingsGroupWithEquivalentFlag! +} + +"""""" +type GlobalSearchQueries { + """Глобальный поиск""" + searchByText( + """Текст поиска""" + searchString: String! + + """Предметы поиска""" + items: [SearchItem]! + + """Параметры пагинации""" + page: PagingInput! + ): GlobalSearchResult! + + """S21. Глобальный поиск. Подсказки""" + getSearchHistoryTooltips: [SearchTooltip]! +} + +"""Результаты глобального поиска""" +type GlobalSearchResult { + """Профили учеников""" + profiles: ProfilesSearchResult + + """Проекты""" + projects: ProjectsSearchResult + + """Курсы (Курсы + проекты)""" + studentCourses: CoursesSearchResult +} + +"""""" +type GlobalSetting { + """""" + notificationType: NotificationType! + + """""" + channels: [Channel!]! +} + +"""""" +input GlobalSettingInput { + """""" + channelId: ID! + + """""" + channelActive: Boolean! + + """""" + notificationTypeId: ID! + + """""" + tenantId: UUID +} + +"""Глобальный план""" +type GlobalStagePlan { + """Идентификатор""" + planId: ID! + + """Идентификатор в каталоге""" + itemId: ID! + + """название""" + title: String! + + """путь до файла с обложкой""" + avatarUrl: String + + """не/архивирован""" + active: Boolean! + + """статус Плана""" + status: PlanStatusEnum! + + """ + список Учебных Модулей в Плане с привязкой к датам и необходимому для достижения уровню + """ + frames: [StagePlanFrame!]! + + """Предмет, по которому составлен План на параллель""" + subjects: [Subject!]! + + """Параллель, для котоой составлен Учебный План""" + stages: [Stage!]! + + """Дата создания плана""" + creationDate: Date! + + """ФИО автора плана""" + authorFio: String! +} + +"""""" +type Goal { + """""" + goalId: ID! + + """""" + goalName: String! + + """""" + goalReviewInfo: GoalReviewInfo! +} + +"""Модуль для проверки в данный слот""" +type GoalCheck { + """Идентификатор модуля""" + goalId: ID! + + """Наименования модуля""" + goalName: String! + + """Информация по проверкам проекта для отображения в календаре БА""" + goalReviewInfo: GoalReviewInfo +} + +""" +Атрибуты "консистентности" проекта (необходимы для проверки возможности Публикации проекта и отображения ошибок неконсистентности пользователю) +""" +type GoalConsistency { + """Идентификатор проекта""" + goalId: ID! + + """ + Признак наличия параметров с количеством попыток выполнения: exam_attempts > 0 И task_attempts > 0 + """ + hasExecutionCriterias: Boolean! + + """Признак наличия настроек расчета балла за проект""" + hasPointsCalculationParams: Boolean! + + """Признак наличия настроек повторного прохождения""" + isAttemptsNumberNotZero: Boolean! + + """Признак отсутствия заданий в проекте""" + hasTasks: Boolean! + + """ + Признак наличия только индивидуальных заданий (используется только в Экзаменационных проектах) + """ + hasOnlyIndividualTasks: Boolean! + + """Признак консистентности всех заданий проекта""" + isAllTasksConsistent: Boolean! + + """Признак консистентности проекта""" + isConsistent: Boolean! + + """Признак Экзамена (тип выполнения проекта - Экзамен)""" + isExamProject: Boolean! + + """Признак Глобальной области видимости проекта""" + isGoalGlobalScoped: Boolean! + + """Список моделей "консистентности" заданий в проекте""" + taskInModuleConsistencyModels: [TaskInModuleConsistency] + + """ + Список сопоставлений ("уровень цели" -> Список сопоставлений("ИД задания", "признак консистентности задания")) для отображения "признаков консистентности" заданий в проекте (разложенных по уровням) + """ + goalLevelToTasksConsistencies: [GoalLevelToTasksConsistencies] + + """Конструкторы для проекта корректны""" + isConstructorsValid: Boolean +} + +"""""" +type GoalDTO { + """""" + id: ID! + + """""" + subjectName: String! + + """""" + title: String! + + """""" + tasks: [Task!]! +} + +""" +Сопоставление учебного модуля(goals.goal_id) и кол-ва дней выделенных на модуль +""" +type GoalDurationMap { + """Идентификатор учебного модуля""" + goalId: ID! + + """Рекомендуемое учебным планом школы кол-во дней выделенных на модуль""" + recommendedDuration: Int! +} + +"""""" +type GoalElementInfo { + """ID Элемента Цели (ЭЦ)""" + goalElementId: ID! + + """ID Уровня Модуля""" + goalLevelId: ID! + + """Значение Уровня для отображения (х.0)""" + goalLevelValueName: String! + + """Буква в названии ЭЦ (A, Б1 и тд)""" + letter: String! + + """Цифра в названии ЭЦ (A1, А2 и тд)""" + number: String! + + """Описание ЭЦ""" + goalElementDescription: String! + + """Чего достигнет Ученик при освоении этого ЭЦ""" + goalElementAchievementDescription: String! + + """Количество заданий в ЭЦ (из СЗ)""" + totalGoalElementTaskCount: Int! +} + +"""""" +type GoalElementInfoAndProgress { + """ID Элемента Цели (ЭЦ)""" + goalElementId: ID! + + """ID Уровня Модуля""" + goalLevelId: ID! + + """Значение Уровня для отображения (х.0)""" + goalLevelValueName: String! + + """Буква в названии ЭЦ (A, Б1 и тд)""" + letter: String! + + """Цифра в названии ЭЦ (A1, А2 и тд)""" + number: String! + + """Описание ЭЦ""" + goalElementDescription: String! + + """Чего достигнет Ученик при освоении этого ЭЦ""" + goalElementAchievementDescription: String! + + """Порядковый номер ЭЦ в Уровне""" + orderInLevel: Int! + + """Тип отображения персонального помощника рядом с ЭЦ""" + assistantDisplayType: AssistantDisplayType + + """ + Количество заданий в ЭЦ (из Траектории, если она есть, иначе -- минимальное из назначенной или дефолтной СЗ) + """ + goalElementTaskCount: Int! + + """Количества в разных Статусах""" + statusAndTaskCount: [StatusAndTaskCount!]! +} + +"""""" +type GoalElementInfoResponse { + """Информация об Элементе Цели""" + goalElementInfo: GoalElementInfo + + """Тип 3Д ассистента""" + assistantDisplayType3D: AssistantDisplayType3D + + """Находятся ли только обязательные задания в СЗ для этого Элемента Цели""" + isPlaylistHasOnlyMandatoryTasks: Boolean! + + """""" + responseCodes: [PersonalTrajectoryResponseCode!]! +} + +"""""" +type GoalElementTask { + """Id Задания""" + taskId: ID! + + """Название Задания""" + title: String! + + """Обязательно ли Задание в СЗ""" + isMandatory: Boolean! + + """Добавлено ли Задание в Траекторию""" + isInTrajectory: Boolean! + + """Может ли Ученик просматривать это Задание""" + canRead: Boolean! + + """ + Статус этого Задания для Ученика (может отсутствовать, если задание еще не было назначено ученику) + """ + taskStatus: TaskStatusEnum + + """Порядковый номер Задания из СЗ""" + order: ID! + + """тип задания (проверочное, мотивационное и тд)""" + taskType: TaskTypeEnum! + + """типы проверок задания (авто проверк, проверка учителем и тд)""" + taskCheckTypes: [TaskCheckEnum!]! + + """форма выполнения задания (индивидуально, в парах и тд)""" + assignmentType: TaskAssignmentEnum! + + """Трудоемкость задания в минутах""" + laboriousness: Int! + + """ + Запланированная дата начала Задания (пока что берется из дат самого Модуля) + """ + startDate: DateTime + + """ + Запланированная дата окончания Задания (пока что берется из дат самого Модуля) + """ + endDate: DateTime + + """Список Мягких Навыков для этого Задания""" + taskSoftSkills: [SoftSkill!]! +} + +"""""" +type GoalElementTasksResponse { + """Задания внутри указанного Элемента Цели""" + goalElementTasks: [GoalElementTask!]! + + """Минимально необходимое количество Заданий по типам""" + requiredTaskCountByTaskType: [RequiredTaskCountByTaskType!]! + + """Минимально необходимое количество Заданий""" + requiredTaskCount: Int! + + """""" + responseCodes: [PersonalTrajectoryResponseCode!]! +} + +"""Уровень цели с элементами""" +type GoalElementWithTasks { + """Элемент цели""" + goalElement: StudyModuleGoalElement! + + """Список заданий с колличеством студентов их выполнивших""" + taskWithCompletedByStudentsInGroupAttributes: [TaskWithCompletedByStudentsInGroupAttribute!]! +} + +"""S21 получение списка завершенных проектов с датами завершения""" +type GoalFinished { + """id проекта""" + goalId: Int! + + """название проекта""" + goalName: String! + + """дата завершения проекта""" + finishDate: DateTime! +} + +"""Отношение неуспешно переведенных ИД модулей к возникшей ошибке""" +type GoalIdToErrorMapModel { + """Идентификатор модуля""" + goalId: ID! + + """Причина по которой не был переведен модуль""" + errorMessage: String! + + """Отношение неуспешно переведенных ИД заданий к возникшей ошибке""" + taskIdToErrorMapModels: [TaskIdToErrorMapModel!] +} + +""" +Краткая информация о модуле в контексте пользователя +Если объект запрашивает родитель, то он возвращается в контексте ребенка, по которому родитель +запрашивает информацию +""" +type GoalInfo { + """Скоуп видимости модуля (Приватный, Кастомный, Глобальный)""" + scope: ScopeEnum! + + """ + Может ли текущий пользователь читать Модуль, определяется через скоуп модуля, + права пользователя и авторство + """ + canRead: Boolean! + + """Может ли текущий пользователь изменять модуль""" + canEdit: Boolean! + + """Найдено ли такой модуль в БД""" + found: Boolean! + + """Может ли пользователь проходить модуль""" + canExecute: Boolean! + + """Причина по которой пользователь не может проходить модуль""" + executeDenyReason: String + + """Список доступных для перехода статусов""" + availableProductionStatuses: [ContentEntityProductionStatus] +} + +"""""" +type GoalLevelInfo { + """id Уровня Модуля""" + goalLevelId: ID! + + """Значение Уровня для отображения (х.0)""" + goalLevelValueName: String! + + """Числовое значение Уровня""" + goalLevel: Int! + + """ + Количество Заданий в Уровне Модуля из Траектории, если она создана, + или из назначенной ему Системы Заданий (СЗ) в Модульного Плане, + или из Дефолтной СЗ Модуля, если Модуль Внеплановый + """ + taskCount: Int! + + """Трудоемкость Уровня в минутах на основании трудоемкости Заданий в нем""" + laboriousness: Int! + + """Рекомендуется ли этот уровень Учителем как целевой в Плане""" + isRecommendedByTeacher: Boolean! + + """Является ли этот Уровень Целевым""" + isStudentTargetLevel: Boolean! + + """Элементы Цели, относящиеся к этому Уровню""" + goalElements: [GoalElementInfo!]! +} + +"""""" +type GoalLevelInfoAndProgress { + """id Уровня Модуля""" + goalLevelId: ID! + + """Значение Уровня для отображения (х.0)""" + goalLevelValueName: String! + + """Числовое значение Уровня""" + goalLevel: Int! + + """ + Количество Заданий в Уровне Модуля из Траектории, если она создана, + или из назначенной ему Системы Заданий (СЗ) в Модульном Плане, + или из Дефолтной СЗ Модуля, если Модуль Внеплановый + """ + taskCount: Int! + + """ + Количество Заданий, которые Ученик прошел в этом Уровне Траектории (статус ACCEPTED) + """ + completedTaskCount: Int! + + """Количество Заданий, находящихся на проверке (статус NEED_CHECK)""" + needCheckTaskCount: Int! + + """Трудоемкость Уровня в минутах на основании трудоемкости Заданий в нем""" + laboriousness: Int! + + """Рекомендуется ли этот уровень Учителем как целевой в Плане""" + isRecommendedByTeacher: Boolean! + + """Входит ли этот уровень в Траекторию (Целевой и ниже)""" + isLevelInTrajectory: Boolean! + + """Является ли этот Уровень Целевым""" + isStudentTargetLevel: Boolean! + + """Зачтен ли этот Уровень (goal_level_achieved_facts)""" + isAchieved: Boolean! + + """Зачтен ли модуль автоматически""" + isAutoAchieved: Boolean! + + """ + Зачтен ли модуль c помощью Закрывающего Теста(пока возможен только 2.0) + """ + isAchievedByLevelTest: Boolean! + + """ + Комментарий Учителя при зачтении Уровня (пока может быть только один на Модуль) и информация об Учителе + """ + teacherCommentInfo: TeacherCommentInfo + + """Элементы Цели, относящиеся к этому Уровню""" + goalElements: [GoalElementInfoAndProgress!]! +} + +"""""" +type GoalLevelPerformance { + """""" + requiredTaskCount: Int! + + """""" + doneTaskCount: Int! + + """""" + goalLevel: String! +} + +"""""" +type GoalLevelProgressResponse { + """Информация об Уровнях Модуля и Прогресс Ученика по ним""" + goalLevels: [GoalLevelInfoAndProgress!]! + + """""" + responseCodes: [PersonalTrajectoryResponseCode!]! +} + +"""""" +type GoalLevelResponse { + """Уровни в Модуле и информация по ним""" + goalLevels: [GoalLevelInfo!]! + + """Тип 3Д ассистента""" + assistantDisplayType3D: AssistantDisplayType3D + + """""" + responseCodes: [PersonalTrajectoryResponseCode!]! +} + +"""Настройки закрывающего теста""" +type GoalLevelTest { + """ID теста""" + id: ID! + + """ + Идентификатор уровня (goal_levels.goal_level_id) к которому привязан тест + """ + goalLevelId: ID! + + """идентификатор модуля""" + goalId: ID + + """Максимальное кол-во допустимых попыток""" + maxAttemptsNumber: Int! + + """Включен ли тест для уровня""" + isActive: Boolean! + + """Кол-во зафейленных заданий после которых должен фейлиться тест""" + failedTasksThreshold: Int! + + """Стратегия выбора заданий""" + taskSelectionStrategy: GoalLevelTestTaskSelectionType! + + """Уровень, к которому привязан тест""" + level: Float! + + """Максимально кол-во элементов цели, учитываемое в емкости теста""" + recommendedMaxSkillsNumber: Int! + + """Минимальное кол-во элементов цели, необходимое для формирования теста""" + requiredMinSkillsNumber: Int! + + """Необходимая по умолчанию емкость элементов цели внутри уровня""" + defaultRequiredSkillCapacity: Int! +} + +"""""" +type GoalLevelTestAttemptOldTask { + """""" + taskId: ID! + + """""" + status: TaskStatusEnum! + + """""" + answers: [StudentAnswer!] +} + +"""""" +type GoalLevelTestAttemptTaskWidget { + """Идентифкатор виджета в контент-сервисе""" + widgetId: ID! + + """Текущий статус виджета""" + widgetStatus: TaskWidgetStatusEnum! + + """Мета-виджет""" + contentWidget: Widget + + """Ответ на виджет""" + answer: GoalLevelTestAttemptTaskWidgetAnswer @deprecated(reason: "Для совместимостью с тренажерами, использовать список с ответами по виджету") + + """Ответы по виджету""" + answers: [GoalLevelTestAttemptTaskWidgetAnswer] +} + +"""""" +type GoalLevelTestAttemptTaskWidgetAnswer { + """Идентификатор варианта вопроса тренажера""" + variantId: String + + """Текущий статус ответа""" + answerStatus: TaskWidgetAnswerStatusEnum! + + """Тело ответа""" + answerBody: WidgetAnswerBody +} + +"""Настройки закрывающего теста для уровня модуля""" +input GoalLevelTestInput { + """Для какого уровня включен тест""" + level: Float! + + """Включен ли тест для уровня""" + isActive: Boolean! + + """Стратегия выбора заданий для теста""" + taskSelectionStrategy: GoalLevelTestTaskSelectionType! +} + +"""Стратегия выбора заданий для закрывающего теста""" +enum GoalLevelTestTaskSelectionType { + """ + Для выборки используются только задания, находящиеся не в терминальном статусе + """ + WITHOUT_ENDED_TASKS + + """Для выборки используются задания в любых статусах""" + WITH_ENDED_TASKS + + """Пройденные задания можно будет проходить повторно""" + WITH_RETAKE +} + +""" +Тип содержит сопоставление ("уровень цели" -> Список сопоставлений("ИД задания", "признак консистентности задания")) для отображения "признаков консистентности" заданий в проекте (разложенных по уровням) +""" +type GoalLevelToTasksConsistencies { + """Порядковый номер уровня""" + goalLevel: Int! + + """ + Список сопоставлений ["ИД задания" -> "признак консистентности задания"] + """ + taskIdToTaskConsistencies: [TaskIdToTaskConsistency] +} + +""" +Задания группированные по элементам цели для планирования расписания к уроку +""" +type GoalLevelWithElements { + """Ид Модуля""" + goalId: ID! + + """Уровень модуля""" + level: StudyModuleLevel! + + """Список элементов цели""" + goalElements: [GoalElementWithTasks!]! +} + +"""""" +input GoalPointInput { + """""" + goalId: ID + + """""" + globalCourseId: ID + + """""" + point: Int! + + """""" + globalPlanId: ID! +} + +"""Информация по проверкам проекта для отображения в календаре БА""" +type GoalReviewInfo { + """Идентификатор проекта""" + goalId: ID! + + """Тип выполнения""" + executionType: ModuleExecutionType! + + """ + Кол-во студентов(для индивидуального проекта)/групп(для группового проекта) локального кампуса, + которые завершили выполнение проекта и еще не записались на проверку к сотруднику + """ + pendingLocalReviews: Int! + + """ + Кол-во студентов(для индивидуального проекта)/групп(для группового проекта) при мультикампусности, + которые завершили выполнение проекта и еще не записались на проверку к сотруднику + """ + pendingMulticampusReviews: Int! + + """Длительность проверки""" + checkDurationMinutes: Int! +} + +"""Статус модуля""" +enum GoalStatus { + """Зарегистрирован""" + REGISTERED + + """В процессе прохождения""" + IN_PROGRESS + + """Пройден""" + ACCEPTED + + """Провален""" + FAILED + + """Назначен""" + ASSIGNED +} + +"""Информация о проекте и количестве студентов в нём""" +type GoalStudentsCount { + """Наименование проекта""" + goalName: String! + + """Количество студентов""" + studentsCount: Int! +} + +"""""" +type GoalTimeFrame { + """""" + id: ID! + + """""" + start: DateTime! + + """""" + end: DateTime! +} + +"""Элемент цели с уровнем и подробным описанием""" +type GoalWithLevel { + """Ид элемента цели""" + goalElementId: ID! + + """Уровень элемента цели""" + goalElementLevel: Float! + + """Подробное описание элемента цели""" + whatStudentStudied: String! +} + +""" +Требуемая информация о модулях студентов выполнивших задания в ГКпП для фильтра +""" +type GoalsFilter { + """""" + goalId: ID + + """""" + goalName: String +} + +"""Способ отображения отметок в системе оценивания""" +enum GovernmentMarkDisplayMethod { + """Отображение значения""" + VALUE + + """Отображение пиктограммы""" + ICON + + """Отображение сокращения""" + ABBREVIATION +} + +"""Система оценивания""" +type GovernmentMarkType { + """""" + id: ID! + + """Название системы оценивания""" + governmentMarkTypeName: String! + + """Признак системы оценивания по умолчанию""" + isDefault: Boolean! + + """Признак того, что система оценивания доступна для использования""" + isActive: Boolean! + + """Признак того, что оценки системы оценивания являются числами""" + isNumeric: Boolean! + + """Способ отображения отметок в данной системе оценивания""" + governmentMarkDisplayMethod: GovernmentMarkDisplayMethod! +} + +"""""" +type GradingScale { + """""" + id: ID! + + """""" + mark: String! + + """""" + percent: Int! +} + +"""""" +input GradingScaleInput { + """""" + mark: String! + + """""" + percent: Int! +} + +"""Статус проекта на графе""" +enum GraphNodeProgressStateEnum { + """""" + UNAVAILABLE + + """""" + LOCKED + + """""" + UNLOCKED + + """""" + IN_PROGRESS + + """""" + COMPLETED + + """""" + FAILED +} + +"""Краткая информация по пользовательской группе""" +type Group { + """Идентификатор пользовательской группе""" + id: UUID! + + """Наименование пользовательской группы""" + name: String! + + """Активна ли группа""" + active: Boolean! + + """Тип пользовательской группы""" + groupType: GroupType +} + +""" +Используется для вызова teacher.getStudentTasks() STUDENT_BY_STUDENT check +""" +type GroupCheckInfo { + """""" + studentIds: [UUID!]! + + """""" + moduleIds: [ID!]! + + """""" + subjectIds: [ID!]! + + """""" + stageSubjectGroupIds: [ID!]! +} + +"""Результат начисления игровых монет.""" +type GroupCoinsTransactionResponseModel { + """Сообщение с логинами и результатом начислений""" + message: String! + + """ + Нужно ли отдать пользователю файл с ошибками(если хоть один логин не найден) + """ + createFile: Boolean! +} + +"""Информация о групповом проекте""" +type GroupProject { + """Модуль проекта""" + module: StudentModule! + + """Команда, в которой состоит студент""" + currentTeam: TeamWithMembers! + + """ + Список команд, в которые студент приглашён. Список участников всегда пустой. + """ + invitingTeams: [TeamWithMembers!]! +} + +"""Информация о команде в групповом проекте""" +type GroupProjectInfo { + """Ид команды""" + teamId: UUID! + + """Название команды""" + teamName: String! + + """Ид выполняемого командой группового проекта""" + goalId: ID! + + """Название выполняемого командой группового проекта""" + goalName: String! +} + +"""Статистика по групповому проекту с информацией о командах""" +type GroupProjectStatistics { + """ + Количество команд, выполняющих проект и ещё не перешедщих в стадию проверки + """ + inProgressTeams: Int! + + """Количество команд, находящихся в стадии проверки проекто""" + evaluationTeams: Int! + + """Количество команд, завершивших выполнение проекта""" + finishedTeams: Int! + + """Количество команд, успешно завершивших выполнение проекта""" + acceptedTeams: Int! + + """Количество команд, неуспешно завершивших выполнение проекта""" + failedTeams: Int! +} + +"""Информация по типу группы пользователя""" +type GroupType { + """""" + id: Int! + + """Описание типа группы пользователя""" + description: String! + + """Признак системная ли это группа""" + isSystem: Boolean! + + """Идентификатор события""" + eventTypeId: Int +} + +"""""" +type GroupedStudentTaskForTeacher { + """Задание""" + task: Task! + + """Статус сгруппированных заданий""" + taskStatus: TaskStatusEnum! + + """Оценка задания""" + taskMark: Int + + """Конкретные задания на проверке""" + studentsToCheck: [StudentToCheck!]! +} + +"""Совокупность достижений за выполнение задания учеником""" +type History { + """""" + id: ID! + + """Уровень до выполнения задания""" + previousExperienceLevel: ExperienceLevel + + """Уровень после выполнения задания""" + currentExperienceLevel: ExperienceLevel + + """Опыт до выполнения задания""" + previousExperienceValue: Int + + """Опыт после выполнения задания""" + currentExperienceValue: Int + + """Дата награждения""" + date: DateTime! + + """Уведомлен ли пользователь о наградах""" + isShown: Boolean! + + """Все полученные награды(и бейджи, и экипировка)""" + awards: [Award!]! + + """Полученные бейджи""" + badges: [Badge!]! + + """Следующий уровень""" + nextExperienceLevel: ExperienceLevel +} + +"""""" +enum HolidayAdaptiveImagesEnum { + """""" + XL3 + + """""" + XL2 + + """""" + XL + + """""" + L + + """""" + M + + """""" + S + + """""" + XS +} + +"""Модель для банера праздника.""" +type HolidayBanner { + """Идентификатор банера.""" + id: ID! + + """Текст для кнопки с действием на баннере.""" + actionText: String + + """Ссылка на изображение для баннера.""" + imageUrl: String! + + """Все размеры изображений""" + bannersImagesModels: [HolidayBannersImagesModel!]! + + """Ссылка на ресурс, куда будет осуществлен переход в браузере.""" + redirectUrl: String +} + +"""""" +type HolidayBannersImagesModel { + """Идентификатор изображения баннера""" + id: ID! + + """Идентификатор баннера""" + bannerId: ID! + + """Тип размера изображения""" + sizeType: HolidayAdaptiveImagesEnum! + + """Ссылка на изображения баннера""" + bannerUrl: String! +} + +"""Модель для группы стикеров праздника.""" +type HolidayStickerPackGroup { + """Идентификатор записи в справочнике группы стикерпаков.""" + id: ID! + + """Название группы стикерпаков.""" + name: String! + + """Ссылки на стикеры.""" + imageUrls: [String!]! +} + +"""Модель для приветственной страницы праздника.""" +type HolidayWelcomePage { + """Идентификатор приветственной страницы.""" + id: ID! + + """Ссылка на изображение приветственной страницы.""" + imageUrl: String! + + """Изображения с адаптивом""" + imagesModels: [HolidayWelcomePageImages!]! + + """Страница по умолчанию.""" + isDefault: Boolean! + + """Контент для приветственной страницы""" + content: String! +} + +"""""" +type HolidayWelcomePageImages { + """Идентификатор изображения приветственной страницы.""" + id: ID! + + """Идентификатор приветственной страницы.""" + welcomePageId: ID! + + """Тип размера изображения""" + sizeType: HolidayAdaptiveImagesEnum! + + """Ссылка на изображение.""" + imageUrl: String! +} + +"""Граф""" +type HolyGraph { + """Id Графа""" + graphId: Int + + """Идентификатор параллели, для которой действует граф""" + stageId: Int + + """Идентификатор продукта, в котором действует граф""" + tenantId: UUID + + """Номер версии графа в архиве (0 для черновиков и опубликованных)""" + version: Int + + """Дата создания""" + createTs: DateTime + + """Автор""" + createdBy: String + + """Дата последнего изменения""" + updateTs: DateTime + + """Автор последнего изменения""" + updatedBy: String + + """Комментарий к версии графа""" + comment: String + + """Статус графа (P - опубликованный, A - архивный, D - черновик)""" + status: String + + """Владелец черновика""" + draftUserId: UUID + + """Граф""" + graph: HolyGraphJSON +} + +"""Связи между элементами графа""" +type HolyGraphEdge { + """Ид связи""" + id: String! + + """id группы-источника""" + source: String! + + """id группы-приемника""" + target: String! + + """id точки выхода""" + sourceHandle: String! + + """id точки входа""" + targetHandle: String! +} + +"""Контекст графа глобального плана""" +type HolyGraphGlobalPlan { + """Id глобального плана""" + globalPlanId: Int + + """Id параллели""" + stageId: Int + + """Id предмета""" + subjectId: Int + + """Статус плана""" + planStatus: PlanStatusEnum + + """Учебные модули глобального плана""" + items: [HolyGraphGlobalPlanItem!]! +} + +"""Учебные модули глобального плана""" +type HolyGraphGlobalPlanItem { + """Тип связанной сущности""" + entityType: HolyGraphItemEntityType + + """Ид связанной сущности""" + entityId: Int + + """Направления обучения (навыки)""" + skills: [HolyGraphItemSkill!]! + + """Детальная информация о проекте""" + goal: HolyGraphItemGoalInfo + + """Детальная информация о курсе""" + course: HolyGraphItemCourseInfo +} + +"""Детальная информация о курсе""" +type HolyGraphItemCourseInfo { + """Id проекта""" + projectId: Int! + + """Название проекта""" + projectName: String! + + """Описание проекта""" + projectDescription: String + + """Максимальное количество очков, которые можно получить за проект""" + projectPoints: Int + + """Тип выполнения курса""" + courseType: CourseType + + """Продолжительность проекта в часах""" + duration: Int + + """Дата проекта""" + projectDate: DateTime + + """Статус проекта""" + projectState: GraphNodeProgressStateEnum + + """ИД локального курса ассоциированного с данным глобальным курсом.""" + localCourseId: Int +} + +"""""" +enum HolyGraphItemEntityType { + """""" + GOAL + + """""" + COURSE + + """""" + UNDEFINED +} + +"""Детальная информация о проекте""" +type HolyGraphItemGoalInfo { + """Id проекта""" + projectId: Int! + + """Название проекта""" + projectName: String! + + """Описание проекта""" + projectDescription: String + + """Максимальное количество очков, которые можно получить за проект""" + projectPoints: Int + + """Тип выполнения проекта""" + goalExecutionType: ModuleExecutionType + + """Продолжительность проекта в часах""" + duration: Int + + """Обязателен ли проект(высчитывается по зависимостям в конструкторах)""" + isMandatory: Boolean + + """Дата проекта""" + projectDate: DateTime + + """Статус проекта""" + projectState: GraphNodeProgressStateEnum +} + +"""Направления обучения (навыки)""" +type HolyGraphItemSkill { + """id""" + id: ID! + + """Уникальное наименование направления""" + name: String! + + """Цвет направления на графе""" + color: String! + + """Цвет текста направления на графе""" + textColor: String +} + +"""Граф (в JSON формате)""" +type HolyGraphJSON { + """Группа элементов графа""" + nodes: [HolyGraphNode!]! + + """Связи элементов графа""" + edges: [HolyGraphEdge!]! +} + +"""""" +type HolyGraphMutations { + """Опубликовать граф для указанной параллели""" + publishGraph( + """Идентификатор параллели""" + stageId: Int! + + """Граф""" + graph: JsonNode! + + """Комментарий""" + comment: String + ): HolyGraph + + """ + Заархивировать опубликованный граф для указанной параллели. + Граф переносится в архив и ему присваивается номер архивной версии. Равносильно операции удаления графа + """ + archiveGraph( + """Идентификатор параллели""" + stageId: Int! + + """Комментарий""" + comment: String + ): HolyGraph + + """ + Восстановить граф из архивной версии (переопубликовать) + Архивная версия публикуется, а текущая опубликованная помещается в архив + """ + restoreArchivedGraph( + """Идентификатор параллели""" + stageId: Int! + + """Версия графа""" + version: Int! + ): HolyGraph + + """Сохранить черновик графа для указанной параллели""" + saveDraft( + """Идентификатор параллели""" + stageId: Int! + + """Граф""" + graph: JsonNode! + ): Int + + """Удалить черновик графа для указанной параллели""" + deleteDraft( + """Идентификатор параллели""" + stageId: Int! + ): Boolean +} + +"""Группы элементов графа""" +type HolyGraphNode { + """Ид группы""" + id: String! + + """Название группы""" + label: String! + + """Элементы группы""" + items: [HolyGraphNodeItem!]! + + """Координаты группы""" + position: HolyGraphNodePosition! +} + +"""Элементы групп графа""" +type HolyGraphNodeItem { + """Ид элемента""" + id: String! + + """Код элемента""" + code: String! + + """Точки входа/выхода""" + handles: [String!]! + + """Тип связанной сущности""" + entityType: HolyGraphItemEntityType! + + """Ид связанной сущности""" + entityId: Int! + + """Направления обучения (навыки)""" + skills: [HolyGraphItemSkill!]! + + """Детальная информация о проекте""" + goal: HolyGraphItemGoalInfo + + """Детальная информация о курсе""" + course: HolyGraphItemCourseInfo + + """Элементы от которых зависит текущий""" + parentNodeCodes: [String!]! +} + +"""Координаты группы""" +type HolyGraphNodePosition { + """""" + x: Int! + + """""" + y: Int! +} + +"""""" +type HolyGraphQueries { + """Получить список параллелей, имеющих опубликованный граф""" + getPublishedGraphStages: [HolyGraphStage!]! + + """Получить граф по указанному Id""" + getGraph( + """Идентификатор графа""" + graphId: Int! + ): HolyGraphJSON + + """Получить опубликованный граф для указанной параллели""" + getPublishedGraph( + """Идентификатор параллели""" + stageId: Int! + + """Возвращать пустой граф если он не существует""" + emptyIfNotExist: Boolean + ): HolyGraphJSON + + """Получить контекст графа глобального плана""" + getGlobalPlanGraph( + """Id глобального плана""" + globalPlanId: Int + ): HolyGraphGlobalPlan + + """Получить граф прогресса студента""" + getStudentStateGraph( + """Id студента""" + studentId: UUID + + """Id класса студента""" + stageGroupId: Int + ): HolyGraphJSON + + """Получить список архивных версий графа для указанной параллели""" + getArchivedGraphVersions( + """Идентификатор параллели""" + stageId: Int! + ): [HolyGraphVersion!]! + + """Получить архивную версию графа для указанной параллели""" + getArchivedGraph( + """Идентификатор параллели""" + stageId: Int! + + """Версия графа""" + version: Int! + ): HolyGraphJSON + + """Проверить наличие у пользователя черновика графа для параллели""" + isDraftGraphExists( + """Идентификатор параллели""" + stageId: Int! + ): Boolean + + """Получить черновик графа пользователя""" + getDraftGraph( + """Идентификатор параллели""" + stageId: Int! + ): HolyGraphJSON +} + +"""Связь графа и параллели""" +type HolyGraphStage { + """Id графа""" + graphId: Int! + + """Id параллели""" + stageId: Int! + + """Наименование параллели""" + stageName: String! + + """Id глобального плана""" + globalPlanId: Int + + """Дата последнего изменения""" + updateTs: DateTime + + """Автор последнего изменения""" + updatedBy: String + + """Комментарий к версии графа""" + comment: String +} + +"""Версия графа""" +type HolyGraphVersion { + """Id графа""" + graphId: Int! + + """Id параллели""" + stageId: Int! + + """Версия графа""" + version: Int! + + """Дата создания""" + createTs: DateTime + + """Автор""" + createdBy: String + + """Комментарий к версии графа""" + comment: String +} + +"""Домашняя работа""" +type Homework { + """Идентификатор домашней работы""" + homeworkId: ID + + """Текстовая заметка к домашней работе""" + note: String + + """Дата и время дедлайна домашней работы""" + deadlineTs: DateTime! + + """Идентификатор группы в контексте параллели и предмета""" + stageSubjectGroupId: ID! + + """ + Задания с идентификатором элемента цели в рамках которого они были добавлены к домашней работе + """ + homeworkTasks: [HomeworkTaskWithGoalElementId!]! + + """Подборки материалов к домашней работе""" + selections: [Selection!]! +} + +"""Условный статус завершенности Домашней Работы""" +enum HomeworkCalculatedStatus { + """""" + FINISHED + + """""" + NOT_FINISHED + + """""" + EXPIRED +} + +"""Информация о Домашней Работе ученика""" +type HomeworkInfo { + """Идентификатор Домашней Работы""" + homeworkId: ID! + + """Статус завершенности Домашней Работы (сейчас вычисляется на лету)""" + status: HomeworkCalculatedStatus! + + """Текстовая заметка к Домашней Работе""" + note: String + + """Дата и время дедлайна Домашней Работы (с таймзоной)""" + deadlineTs: DateTime! + + """Предмет""" + subject: Subject! + + """Задания Домашней Работы""" + homeworkTasks: [HomeworkStudentTaskInfo!]! + + """ + Дополнительная информация о заданиях Домашней Работы - следующее доступное для выполнения итп. + """ + homeworkTasksAdditionalInfo: HomeworkTasksAdditionalInfo + + """Идентификатор плана урока, к которому привязана домашняя работа""" + lessonPlanId: ID +} + +"""Домашняя работа""" +input HomeworkInput { + """Идентификатор домашней работы""" + homeworkId: ID + + """Текстовая заметка к домашней работе""" + note: String + + """Дата и время дедлайна домашней работы""" + deadlineTs: DateTime! + + """Идентификатор группы в контексте параллели и предмета""" + stageSubjectGroupId: ID! + + """ + Задания с идентификатором элемента цели в рамках которого они были добавлены к домашней работе + """ + homeworkTasks: [HomeworkTaskWithGoalElementIdInput!]! +} + +""" +Мета информация о домашней работе для страницы редактирования подборки материалов к ней +""" +type HomeworkMeta { + """Название класса в параллели (6 А)""" + stageGroupName: String! + + """Название предмета в краткой форме""" + subjectShortName: String! + + """Название модуля""" + goalName: String! + + """Дата и время дедлайна домашней работы""" + deadlineTs: DateTime! + + """ + Идентификатор учителя группы-по-предмету к которой относится данная домашняя работа + """ + teacherId: UUID! +} + +"""Информация о Задании Ученика, в рамках Домашней Работы""" +type HomeworkStudentTaskInfo { + """Задание (метаданные)""" + task: Task! + + """Задание Ученика (может отсутствовать)""" + studentTask: StudentTask + + """ + Признак завершенности задания (непосредственно или через закрытый Учителем уровень модуля) + """ + isFinished: Boolean! + + """Номер задания по порядку, в рамках Домашней Работы""" + order: Int! +} + +"""Задание домашней работы с элементом цели""" +type HomeworkTaskWithGoalElementId { + """Ид элемента цели""" + goalElementId: ID! + + """Ид задания""" + taskId: ID! + + """Порядок внутри домашней работы""" + order: Int! +} + +"""Задание домашней работы с элементом цели""" +input HomeworkTaskWithGoalElementIdInput { + """Ид элемента цели""" + goalElementId: ID! + + """Ид задания""" + taskId: ID! + + """Порядок внутри плана модуля""" + order: Int! +} + +""" +Дополнительная информация о заданиях Домашней Работы - следующее доступное для выполнения итп. +""" +type HomeworkTasksAdditionalInfo { + """Следующее доступное для выполнения задание в рамках ДР""" + nextTaskToComplete: Task + + """Кол-во заданий в рамках ДР, отправленных на проверку""" + tasksBeingCheckedCount: Int! +} + +"""""" +type HonorRatingMutations { + """ + Cохранить отзыв студента для "Доски почёта" + """ + saveStudentHonorRatings(studentHonorRatings: [StudentHonorRatingInput!]!): [StudentHonorRatingModel!]! +} + +"""""" +type HonorRatingQueries { + """Поиск одноклассников студента""" + getClassmates(textSearch: String): [User!]! + + """Проверка, необходимо ли выводить форму запроса о героях/антигероях""" + isHonorRatingNeeded: Boolean! +} + +"""""" +enum HttpStatus { + """200""" + OK + + """403""" + FORBIDDEN + + """404""" + NOT_FOUND +} + +"""""" +interface IProject { + """""" + id: UUID! + + """""" + name: String! + + """""" + shortName: String! + + """""" + description: String! + + """""" + teamId: UUID! + + """""" + technology: Technology! + + """""" + branch: Branch! + + """""" + customer: Customer! + + """""" + country: Country! + + """""" + region: Region + + """""" + parentId: UUID + + """""" + state: ProjectState! + + """""" + modifiedAt: DateTime! + + """""" + technologyOtherDesc: String + + """""" + branchOtherDesc: String + + """""" + customerOtherDesc: String + + """""" + logotypeUrl: String + + """""" + files: [ProjectFile] +} + +"""Контекст входящего ответа по Заданию, с дополнительной информацией""" +input IncomingAnswerContextInput { + """ИД Домашней Работы, в контексте которой выполняется данное Задание""" + homeworkId: ID + + """ID закрывающего теста, в контексте которого выполняется задание""" + goalLevelTestId: ID +} + +"""Показатели настройки (опыт, вес) страницы экзаменационного теста""" +type IndicatorsSettingExamTestPageModel { + """Идентификатор страницы""" + pageId: UUID! + + """Опыт, начисляемый за прохождение страницы (всех виджетов на странице)""" + pageExperience: Int! + + """Вес страницы""" + pageWeight: Float! +} + +"""""" +type InnopolisDigitalContent { + """Неизменяемый ID, который будет передаваться в Иннополис""" + innopolisExternalContentId: ID! + + """""" + createTs: DateTime! + + """""" + updateTs: DateTime! + + """Название учебного материала. Для подборок, модулей и заданий""" + innopolisCourseName: String + + """Описание для подборок и заданий""" + innopolisCourseDescription: String + + """ + Внутренний тип, используемые для хранения сущности. Например, подборка из Медиатеки или План. Допстимые значения MEDIATEKA_SELECTION, GOAL, TASK + """ + sberclassEntityType: String + + """ID сущности для internalEntityType""" + sberclassEntityId: String + + """ + id родительского элемента из этой таблицы. Применимо для модулей (в этом случае родитель - цок (подборка, план) и для заданий (родитель - модуль) + """ + innopolisParentContentId: ID + + """ + тип материала 0 – цок, 1 – раздел, 3 – учебный материал. Иннополис поддерживает еще тип 2 - Тема, но он не используется + """ + innopolisCourseTypeId: Int + + """Ссылка на сущность внутри Сберкласса.""" + innopolisExternalLink: String + + """ + Массив классов, которым доступен учебный материал. (1 – 1 класс общеобразовательной школы; 2 – 2 класс общеобразовательной школы; ….; 11 – 11 класс общеобразовательной школы; 12 – 1 курс; 13 – 2 курс; 14 – 3 курс; 15 – 4 курс; 16 – 5 курс + """ + innopolisGrades: [String] + + """Массив тегов для Иннополиса. содержит UUID тегов из API Иннополиса""" + innopolisTags: [String] +} + +"""""" +input InnopolisDigitalContentFilter { + """Внешние id, которые передаются в Иннополис""" + innopolisExternalContentIds: [String!] + + """ + Внутренний тип, используемый в Сберклассе. Например, подборки (MEDIATEKA_SELECTION) или планы. + """ + sberclassEntityType: String + + """ID, используются в сочетании с internalType.""" + sberclassEntityIds: [String!] + + """ + Тип контента в Иннополисе.0 – цок (план, подборка), 1 – раздел(модуль), 3 – учебный материал (задание). + """ + innopolisCourseTypeIds: [Int!] +} + +"""""" +type InnopolisTeacher { + """""" + teacherId: ID! + + """""" + schoolId: ID! + + """""" + firstName: String! + + """""" + middleName: String + + """""" + lastName: String! +} + +"""""" +type InternshipStudentInfo { + """""" + link: String + + """""" + internshipStartTime: DateTime + + """""" + internshipCompletionTime: DateTime +} + +"""""" +type InternshipStudentReview { + """Порядковый номер ревью""" + reviewOrderNumber: Int + + """Планируемая дата/время обратной связи наставника""" + planTimeMentorReview: DateTime + + """Фактическая дата/время обратной связи наставника""" + factTimeMentorReview: DateTime + + """Оценка наставника""" + percentageMentorReview: Float + + """Комментарий к оценке наставника""" + commentMentorReview: String + + """порог прохождения""" + threshold: Int +} + +"""ответы ментора разбитие по попыткам""" +type InternshipStudentReviewInfo { + """Список ответов""" + internshipStudentReviewList: [InternshipStudentReviewList] +} + +"""""" +type InternshipStudentReviewList { + """Список обратых связей наставника""" + reviewModelList: [InternshipStudentReview] + + """количество проверок обратной связи""" + numberReview: Int + + """id попытки""" + studentProgressInternshipId: Int +} + +"""Статус приглашения в команду для группового задания""" +enum InvitationStatusEnum { + """Пользователь, доступный для приглашения в команду""" + CANDIDATE + + """Приглашенный в команду пользователь""" + INVITED + + """Отказавшийся от приглашения пользователь""" + REFUSED +} + +"""""" +input InviteRequestInput { + """""" + inviteUserId: UUID! + + """""" + vacancyId: UUID! + + """""" + inviteReasonDescription: String! +} + +"""""" +type InviteRequestModel { + """""" + inviteId: UUID + + """""" + inviteDate: Date! + + """""" + inviteReasonDescription: String! + + """""" + vacancyId: UUID! + + """""" + vacancyName: String! + + """""" + inviteStatus: String! +} + +"""Результат переключения статуса избранного для материала""" +type ItemBatchResult { + """целевой идентификатор каталога""" + processed: [UUID!] + + """статус нахождения в избранном""" + errors: [ItemFailure!]! +} + +"""Результат переключения статуса избранного для материала""" +type ItemBookmarkStatus { + """целевой идентификатор каталога""" + itemId: UUID! + + """статус нахождения в избранном""" + status: Boolean! + + """актуальная статистика с учетом текущего статуса""" + meta: BookmarkStatistics! +} + +"""Категория элементов каталога""" +type ItemCategory { + """ID""" + itemCategoryId: ID! + + """Уникальный статический ключ категории""" + categoryKey: String! + + """Название категории (читаемое)""" + categoryName: String! + + """Список дочерних категорий""" + childCategories( + """ + Идентификатор конкретной дочерней категории (если нет необходимости в загрузке всех) + """ + childCategoryId: ID + ): [ItemCategory!]! + + """""" + categoryItems( + """ + Фильтр по учебным параллелям. + Устарело, используйте stagesV2. + """ + stages: [AdditionalContentStage!]! + + """Фильтр по регионам""" + regionIds: [UUID!]! + + """Фильтр по предметам""" + subjectIds: [ID!]! + + """Фильтр по типам""" + contentTypes: [MediatekaContentType!]! + + """Фильтр по нижней границе даты начала проведения мероприятия""" + startDate: Date + + """Фильтр по верхней границе даты начала проведения мероприятия""" + endDate: Date + + """Фильтр по формату проведения""" + contentFormat: AdditionalContentFormat + + """Учебник/не учебник""" + isEducationalMaterial: Boolean + + """Параметры пагинации""" + page: PagingInput! + ): CategoryItemPage! @deprecated(reason: "Переход от AdditionalContentStage к идентификаторам параллелей из Stage.\nИспользовать categoryItemsV2, будет удалено после 01.09.2021") + + """""" + categoryItemsV2( + """Фильтр медиатеки""" + filter: MediatekaItemsFilter + + """Параметры пагинации""" + page: PagingInput! + ): CategoryItemPage! +} + +"""Результат переключения статуса избранного для материала""" +type ItemFailure { + """целевой идентификатор каталога""" + itemId: UUID! + + """статус нахождения в избранном""" + errorMessage: String! +} + +""" +Флаги управления элементами каталога в рамках медиатеки (комбинация прав доступа и фича-флагов) +""" +type ItemManagementProperties { + """Доступность создания элемента (мутация createItem)""" + createItem: Boolean! + + """Доступность обновления элемента (мутация updateItem)""" + updateItem: Boolean! + + """Доступность публикации эламента (мутация publishItem)""" + publishItem: Boolean! + + """Доступность архивации элемента (мутация archiveItem)""" + archiveItem: Boolean! + + """Доступность разархивации элемента (мутация unarchiveItem)""" + unarchiveItem: Boolean! + + """ + Доступность обновления категорий элемента (мутация updateItem, свойство categoryIds) + """ + updateCategories: Boolean! +} + +"""Страница с результатами поиска материалов""" +type ItemPageModel { + """Найденные элементы""" + content: [ContentItem!]! + + """Общее число элементов, совпавших с фильтром""" + totalItems: Int! @deprecated(reason: "Переход от Page к Slice") + + """Номер запрошенной страницы (начиная с 0)""" + pageNumber: Int! + + """Размер запрошенной страницы""" + pageSize: Int! +} + +"""""" +type JoinTeamRequest { + """""" + id: UUID! + + """""" + user: User + + """""" + teamId: UUID! + + """""" + project: Project + + """""" + state: RequestState! + + """""" + declineReason: DeclineReason + + """""" + declineReasonDescription: String + + """""" + lastModifiedTs: DateTime! + + """""" + createdTs: DateTime! + + """""" + requestReason: String + + """""" + vacancy: ProjectRole + + """""" + read: Boolean! +} + +"""""" +type JournalCell { + """""" + visitJournalCellId: UUID + + """""" + visitJournalCellValue: VisitJournalCellValueEnum + + """""" + visitJournalCellComment: String + + """""" + wasInGroup: Boolean + + """""" + marks: [JournalCellMark!]! + + """Комментарий учителя к уроку для ученика""" + journalStudentComment: JournalStudentComment +} + +"""""" +type JournalCellMark { + """""" + lessonLearningActivityId: ID! + + """""" + learningActivityId: ID! + + """""" + position: Int! + + """""" + studentJournalMarkId: ID! + + """""" + markId: ID + + """""" + comment: String + + """""" + needMark: Boolean + + """""" + initialWeight: Float! +} + +"""""" +type JournalCellsMap { + """""" + key: String! + + """""" + value: JournalCell +} + +"""Итоговые оценки для электронного журнала""" +type JournalFinalStudentMark { + """идентификатор итоговой оценки""" + id: ID! + + """Ид группы по предмету""" + stageSubjectGroupId: ID! + + """идентификатор студента""" + studentId: UUID! + + """Ид учебного периода(четверть)""" + studyPeriodId: ID + + """Ид учебного года""" + academicYearId: ID! + + """средняя оценка""" + averageMark: String + + """средневзвешенная оценка за учебный период""" + weightedAverageMark: String + + """ИД оценки""" + markId: ID + + """комментарий к итоговой оценке""" + comment: String +} + +"""Итоговые оценки по изучаемому предмету""" +type JournalFinalStudentMarkByStageSubject { + """""" + studentStageSubject: StudentStageSubject + + """""" + marks: [JournalFinalStudentMark] +} + +"""Тип отчета для электронного журнала""" +enum JournalReportTypeEnum { + """успеваемость""" + PERFORMANCE + + """посещаемость""" + ATTENDANCE +} + +"""Тип для комментария учителя к уроку для ученика""" +type JournalStudentComment { + """Идентификатор комментария учителя к уроку для ученика""" + id: ID! + + """Идентификатор урока""" + lessonId: ID! + + """Идентификатор ученика""" + studentId: UUID! + + """Комментарий учителя к уроку для ученика""" + comment: String! + + """Дата создания комментария""" + createTime: DateTime! + + """Учитель создавший комментарий""" + createTeacherId: UUID! + + """Дата последнего изменения комментария""" + updateTime: DateTime + + """Учитель последний раз изменивший комментарий""" + updateTeacherId: UUID +} + +"""""" +type JournalStudentMark { + """""" + id: ID! + + """""" + studentId: String! + + """""" + lessonLearningActivityId: String! + + """""" + markId: String + + """""" + comment: String + + """""" + needMark: Boolean + + """""" + markTeacherId: ID! + + """""" + markTeacher: User +} + +"""""" +scalar JsonNode + +"""""" +type KandinskyQueries { + """""" + generateImage( + """Ширина 1024 768 512""" + width: Int! + + """Высота 1024 768 512""" + height: Int! + + """Строка описывающая картинку""" + query: String! + ): String! + + """возвращает id запроса для получения результата""" + checkGenerationStatus( + """id запроса, полученный при генерации картинки""" + requestId: String! + ): KandinskyResponse! +} + +"""Результат генерирования картинки""" +type KandinskyResponse { + """""" + isFinished: Boolean! + + """Сгенерированные картинки закодированные в base64""" + images: [String!] +} + +""" +Простое отображение внутреннего идентификатора к его читаемому значению +Требуется для построения на фронте выпадающего списка доступных значений +""" +type KeyValue { + """Ключ, например '23', '00000000-0000-0000-0001-000000001001'""" + key: String! + + """ + Значение, например "Student Experience", "Киселев В." + """ + value: String! +} + +"""Справочник категории секции""" +type KindQuestion { + """Содержит вид категории""" + kindQuestionId: ID! + + """Содержит название категории""" + description: String! + + """Содержит флаг основной ли тип секции""" + isPrimary: Boolean! +} + +""" +Шаблон лендинга +Simplified in EDU-69256 +""" +type LandingTemplate { + """""" + id: ID! + + """""" + title: String! +} + +"""""" +type LeaderBoardInfo { + """PK""" + id: ID! + + """Название борда""" + boardName: String! + + """Признак вкл/выкл""" + active: Boolean! + + """Период действия борда (дата от)""" + periodFrom: Date! + + """Период действия борда (дата по)""" + periodTo: Date! + + """Код пользователя, создавшего борд""" + createUserId: ID! + + """Время создания""" + createTime: DateTime! + + """Код пользователя, внесшего последние правки""" + modifyUserId: ID + + """Время модификации""" + modifyTime: DateTime + + """Коды пользователей, по которым строится лидерборд""" + userIds: [ID!]! + + """список метрик, входящих в лидерборд""" + metrics: [Metric!]! +} + +"""""" +type LeaderBoardMutations { + """создание нового борда""" + createLeaderBoard(boardName: String!, periodFrom: Date!, periodTo: Date!, metrics: [Metric!]!, userIds: [UUID!]!): LeaderBoardInfo! + + """ + переопределение списка пользователей, по которым строится таблица лидеров + """ + setUsersForLeaderBoard(leaderBoardId: ID!, userIds: [UUID!]!): Boolean! + + """переопределение списка метрик, по которым строится таблица лидеров""" + setMetricsForLeaderBoard(leaderBoardId: ID!, metrics: [Metric!]!): Boolean! + + """установить/снять флаг активности для лидерборда""" + setActiveFlagForLeaderBoard(leaderBoardId: ID!, flag: Boolean!): Boolean! + + """обнулить лидерборд""" + clearLeaderBoard(leaderBoardId: ID!): Boolean! + + """Исключения отдельного человека из отдельного лидерборда""" + removeUsersFromLeaderBoard(leaderBoardId: ID!, userIds: [UUID!]!): Boolean! + + """Добавление пользователя в лидерборд""" + addUsersToLeaderBoard(leaderBoardId: ID!, userIds: [UUID!]!): Boolean! +} + +"""""" +type LeaderBoardQueries { + """получение метаинформации по лидерборду""" + getLeaderBoardInfo(leaderBoardId: ID!): LeaderBoardInfo! + + """получение заполненного лидерборда (после вызова prepareLeaderBoard)""" + getFilledLeaderBoard(leaderBoardId: ID!, limit: Int!, offset: Int!): [LeaderBoardRow!]! + + """получение списка лидербордов, в которые входит пользователь""" + getLeaderBoardsByUserId(userId: UUID!, isActive: Boolean!): [LeaderBoardInfo!]! + + """получение списка лидербордов по флагу активности""" + getLeaderBoardsByFlag(isActive: Boolean!): [ID!]! + + """получение метаинформации по метрикам""" + getMetricsInfo(metrics: [Metric!]!): [MetricInfo!]! + + """Место и ряд текущего пользователя в лидерборде""" + getCurrentUserRankAndRow(leaderBoardId: ID!): UserRankAndRow! + + """Место и ряд пользователя в лидерборде""" + getUserRankAndRow(leaderBoardId: ID!, userId: UUID!): UserRankAndRow! +} + +"""строка таблицы лидеров""" +type LeaderBoardRow { + """""" + userId: ID! + + """ФИО пользователя""" + userFullName: String! + + """имя пользователя""" + userFirstName: String! + + """фамилия пользователя""" + userLastName: String! + + """отчество пользователя""" + userSurName: String! + + """аватар пользователя""" + avatarUrl: String + + """программа обучения (класс/группа)""" + studyProgram: String! + + """Максимальное место, которое занимал пользователь в этом лидерборде""" + bestRank: Int! + + """Дата и время самого первого раза, когда попал на максимальное место""" + bestRankDateTime: DateTime! + + """Текущее место""" + currentRank: Int! + + """Значения метрик входящих в лидерборд""" + metricValues: [MetricValue!]! + + """Итоговое значение баллов по всем метрикам""" + scores: Int! +} + +"""Учебная активность""" +type LearningActivity { + """ID учебной активности""" + id: ID! + + """""" + learningActivityId: ID! + + """Наименование учебной активности""" + name: String! + + """Сокращенное название учебной активности""" + abbreviation: String + + """Вес активности""" + weight: Float! + + """Вес активности по умолчанию""" + defaultWeight: Float! + + """Последовательность/позиция учебных активностей в электронном журнале""" + defaultPosition: Int + + """Идентификатор образовательного учреждения(школы)""" + orgUnitId: UUID! + + """ + Идентификатор "тенанта" продуктового уровня, к которому привязана учебная активность. + """ + tenantId: UUID! + + """Тип формы контроля""" + formControlType: FormControlTypeEnum! + + """Система оценивания""" + governmentMarkType: GovernmentMarkType! + + """ + Идентификатор связанной настройки формы контроля для уровня образования и учебного предмета контекстной школы. + Заполняется при наличии контекста (школы, уровня образования и учебного предмета) + """ + studyStepSubjectLearningActivityId: ID +} + +"""""" +input LearningActivityInput { + """ID учебной активности""" + learningActivityId: ID! + + """Наименование учебной активности""" + name: String! + + """Сокращенное название учебной активности""" + abbreviation: String + + """Вес активности""" + weight: Float! + + """Последовательность/позиция учебных активностей в электронном журнале""" + defaultPosition: Int + + """Идентификатор образовательного учреждения(школы)""" + orgUnitId: UUID + + """ + Идентификатор "тенанта" продуктового уровня, к которому привязана учебная активность. + """ + tenantId: UUID + + """Тип формы контроля""" + formControlType: FormControlTypeEnum + + """Система оценивания""" + governmentMarkTypeId: ID +} + +"""Набор форм контроля""" +type LearningActivitySet { + """Идентификатор набора форм контроля""" + id: ID! + + """Наименование набора форм контроля""" + name: String! + + """Элементы набора форм контроля""" + learningActivitySetElements: [LearningActivitySetElement!]! +} + +"""Элемент набора форм контроля""" +type LearningActivitySetElement { + """Идентификатор элемента набора форм контроля""" + id: ID! + + """Форма контроля""" + learningActivity: LearningActivity! + + """Вес формы контроля""" + weight: Float! + + """Тип формы контроля""" + formControlType: FormControlTypeEnum! + + """Система оценивания""" + governmentMarkType: GovernmentMarkType! +} + +"""Элемент набора форм контроля""" +input LearningActivitySetElementInput { + """Идентификатор элемента набора форм контроля""" + id: ID! + + """Форма контроля""" + learningActivity: LearningActivityInput! + + """Вес формы контроля""" + weight: Float! + + """Тип формы контроля""" + formControlType: FormControlTypeEnum! + + """Система оценивания""" + governmentMarkTypeId: ID! +} + +"""Набор форм контроля""" +input LearningActivitySetInput { + """Идентификатор набора форм контроля""" + id: ID! + + """Наименование набора форм контроля""" + name: String! + + """Элементы набора форм контроля""" + learningActivitySetElements: [LearningActivitySetElementInput!]! +} + +"""Типы групп учебных сущностей""" +enum LearningEntityGroupType { + """Глобальный учебный план""" + GLOBAL_PLAN + + """Учебный план на параллель конкретной школы по конкретному предмету""" + STAGE_SUBJECT_PLAN + + """Учебный план на группу по предмету (класс)""" + STAGE_SUBJECT_GROUP_PLAN + + """Глобальный курс""" + GLOBAL_COURSE + + """Локальный курс""" + LOCAL_COURSE +} + +"""Программа обучения""" +type LearningProgram { + """Идентификатор программы""" + learningProgramId: ID! + + """Идентификатор организации-организатора программы""" + organizerSchoolId: UUID! + + """Полное наименование программы""" + name: String! + + """Короткое наименование программы""" + shortName: String! + + """ + Тип программы + Возможны только EXTERNAL_LEARNING, COMPETITION и EXTERNAL_COMPETITION + """ + type: LearningTypeEnum! + + """Текущий статус программы""" + learningProgramStatus: LearningProgramStatus! + + """Текущий статус публикации программы""" + publicationStatus: PublicationStatus! + + """Дата создания программы""" + createDateTime: DateTime! + + """Дата изменения программы""" + modifyDateTime: DateTime! + + """Список администраторов программы""" + administrators: [User!]! + + """Список направлений программы""" + learningDirections: [LearningProgramDirection!]! + + """Список региональных групп проверяющих программы""" + regionVerifierGroups: [RegionVerifierGroup!]! + + """Отчет о валидации программы""" + validationReport: [String!]! @deprecated(reason: "не используется") + + """Отчет о публикации программы""" + publicationReport: [String!]! @deprecated(reason: "не используется") + + """Информация о группе асинхронных задач публикации программы""" + publicationData: AsyncExecutionData + + """Типы неопубликованных изменений программы""" + unpublishedChanges: [UnpublishedChangesType!]! +} + +"""Направление программы""" +type LearningProgramDirection { + """Идентификатор направления обучения""" + learningProgramDirectionId: ID! + + """Идентификатор программы обучения, к которой относится направление""" + learningProgramId: ID! + + """Идентификатор учебного предмета направления""" + subjectId: ID! + + """ + Идентификатор драфтового учебного плана направления. + Будет спущен на школы-участницы при следующей публикации программы или направления + """ + patternGlobalPlanId: ID! + + """Идентификатор действующего/опубликованного учебного плана направления""" + publishedGlobalPlanId: ID! + + """Список ролей, которым будет обучение по направлению""" + userRoles: [ROLES!]! + + """Дата создания направления программы""" + createDateTime: DateTime! + + """Дата последнего изменения направления""" + modifyDateTime: DateTime! + + """Текущий статус направления""" + status: LearningProgramDirectionStatus! + + """ + Информация о группе задач публикации, в которую входит задача на публикацию этого направления + """ + publicationData: AsyncExecutionData + + """ + Идентификатор(номер) параллели, которой будет доступно направление обучения + """ + stageId: Int +} + +"""Направление программы""" +input LearningProgramDirectionInput { + """Идентификатор программы обучения""" + learningProgramId: ID! + + """Идентификатор учебного предмета""" + subjectId: ID! + + """Список ролей, которым будет доступно направление обучения""" + userRoles: [ROLES!]! + + """Идентификатор параллели, которой будет доступно направление обучения""" + stageId: Int! +} + +"""""" +enum LearningProgramDirectionStatus { + """План отсутствует""" + NO_PLAN + + """Не опубликован""" + NOT_PUBLISHED + + """Опубликован""" + PUBLISHED + + """Опубликовано в части школ""" + PARTIALLY_PUBLISHED + + """Изменена после публикации""" + CHANGED +} + +"""""" +type LearningProgramDirectionViewForReport { + """""" + learningProgramDirectionId: ID! + + """""" + learningProgramId: ID! + + """""" + learningProgramName: String! + + """""" + subjectId: ID! + + """""" + subjectName: String! +} + +"""Информация о программе внешнего обучения""" +type LearningProgramInfo { + """Id программы""" + learningProgramId: ID! + + """Id школы-организатора""" + organizerSchoolId: UUID! + + """Наименование программы""" + name: String! + + """Короткое наименование программы""" + shortName: String! + + """Статус программы обучение""" + learningProgramStatus: LearningProgramStatus! + + """Статус публикации""" + publicationStatus: PublicationStatus! + + """ + идентификатор проверочной корзины (пока что только для Внешнего Конкурса) + """ + checkBucketId: UUID +} + +"""Школа в учебной програме, с дополнительной информацией""" +type LearningProgramSchool { + """Id школы как участницы программы""" + learningProgramSchoolId: ID! + + """Идентификатор программы""" + learningProgramId: ID! + + """Id школы""" + schoolId: UUID! + + """Текущий статус школы в программе""" + status: LearningProgramSchoolStatus! + + """ + Дата, с которой программа активна в школе + Является точкой отсчета начала учебных планов + """ + dateEnable: DateTime + + """ + Фактическая дата, с которой программа активна в школе, + зафиксированная при тиражировании планов программы + """ + actualDateEnable: DateTime + + """Идентификатор региона школы""" + regionId: UUID! + + """Название региона школы""" + regionName: String! + + """ + Идентификатор школы. Пример - "00-00055" + """ + schoolIdentifier: String! + + """Краткое наименование школы""" + schoolName: String! + + """Флаг, показывающий, назначены ли школьные проверяющие""" + isSchoolVerifier: Boolean! + + """ + Флаг, показывающий, есть ли изменения в группах "приоритетных" проверяющих + """ + isVerifierChanged: Boolean! +} + +"""Фильтр выбора школ для внешнего обучения""" +input LearningProgramSchoolInput { + """Информация об идентификаторе программы""" + learningProgramId: ID! + + """Фильтр тега школы""" + schoolTag: String + + """Фильтр региона школы""" + regionName: String + + """Фильтр идентификатора школы""" + schoolIdentifier: String + + """Фильтр короткого имени школы""" + schoolShortName: String +} + +"""""" +type LearningProgramSchoolList { + """Список школ, с учетом пагинации""" + learningProgramSchools: [SchoolForLearningProgram!]! + + """Общее кол-во школ, пагинация не учитывается""" + schoolsCount: Int! +} + +"""""" +enum LearningProgramSchoolStatus { + """Добавлена""" + ADDED + + """Подключена""" + ENABLED + + """Отключена""" + DISABLED +} + +"""Модель для страницы со списком школ""" +type LearningProgramSchoolsPage { + """Список школ""" + schools: [LearningProgramSchool!]! + + """Количество школ включенных в программу""" + enabledSchoolsCount: Int! + + """Количество школ добавляемых в программу""" + addedSchoolsCount: Int! + + """Количество школ исключаемых из программы""" + disabledSchoolsCount: Int! +} + +""" +Краткая информация о программе (Внешнего обучения, Конкурса, Внешнего конкурса) +""" +type LearningProgramSimply { + """идентификатор программы""" + learningProgramId: ID! + + """id школы-организатора программы""" + organizerSchoolId: UUID! + + """наименование программы""" + name: String! + + """короткое наименование программы""" + shortName: String! + + """тип программы""" + type: LearningTypeEnum! +} + +"""""" +enum LearningProgramStatus { + """Подготовка""" + PREPARATION + + """Идет публикация""" + PUBLICATION_IN_PROGRESS + + """Действует""" + ACTIVE + + """Закрыта""" + CLOSED +} + +"""""" +enum LearningTypeEnum { + """Основное обучение""" + BASE_LEARNING + + """Внутреннее обучение""" + INTERNAL_LEARNING + + """Внешнее обучение""" + EXTERNAL_LEARNING + + """Эталон""" + LEARNING_MODEL + + """Конкурс""" + COMPETITION + + """Внешний конкурс""" + EXTERNAL_COMPETITION +} + +"""Урок для Учителя и БА""" +type Lesson { + """Идентификатор (timetables.timetable_id)""" + id: ID! + + """Идентификатор урока""" + lessonId: ID! + + """Дата и время проведения Урока""" + date: DateTime! + + """Название цели""" + goalName: String! @deprecated + + """Крайний срок достижении цели""" + goalEndDate: DateTime! @deprecated + + """Группа по предмету, для которого проводится Урок""" + classSubject: ClassSubject! + + """""" + methodics: [File!]! @deprecated + + """заметка к плану урока""" + noteToLessonPlan: LessonNoteToLessonPlan + + """онлайн-урок к плану урока""" + onlineLessonToLessonPlan: OnlineLessonToLessonPlan + + """Идентификатор интервала времени, в который проводится урок""" + timeslotId: ID! + + """Идентификатор классной комнаты""" + classroomId: ID + + """Идентификатор здания""" + buildingId: ID + + """Группа классов параллели""" + stageGroupId: ID! + + """Тема к плану урока""" + topicToLessonPlan: LessonTopicToLessonPlan + + """Дата начала повторения (для цепочки уроков)""" + repeatStartDate: Date + + """Дата окончания повторения (для цепочки уроков)""" + repeatEndDate: Date + + """Есть ли план урока""" + hasLessonPlans: Boolean! + + """Есть ли хотя бы одна активная оценка по уроку""" + hasLessonLearningActivities: Boolean! + + """Есть ли отметки о посещаемости по уроку""" + hasVisitJournalCells: Boolean! +} + +"""Драфт урока""" +input LessonDraft { + """Null в случае нового урока""" + lessonDraftId: ID + + """Порядковый день недели""" + dayOrderNumber: Int! + + """ + Идентификатор класса + deprecated(reason: "Filled in StageGroupTimetableDraftInput") + """ + stageGroupId: ID + + """Идентификатор кабинета""" + classroomId: ID! + + """Идентификтор ГКпП""" + stageSubjectGroupId: ID! + + """Идентификатор предмета""" + subjectId: ID! + + """Идентификатор учителя""" + teacherId: UUID! + + """Номер урока""" + lessonNumber: Int! +} + +"""Драфт урока по ГКпП""" +type LessonDraftV2 { + """Идентификатор драфта урока""" + lessonDraftId: ID! + + """Идентификатор учителя и его идентификатор пользователя""" + teacher: TeacherUserInfo! + + """Номер урока""" + lessonNumber: Int + + """Идентификатор интервала времени, в который проводится урок""" + lessonTimeslotId: ID + + """Номер дня""" + dayNumber: Int + + """Наименование кабинета""" + classroomName: String + + """Идентификатор кабинета""" + classroomId: ID + + """Наименование класса""" + stageGroupName: String! + + """Идентификатор класса""" + stageGroupId: ID! + + """Является ли группа межклассовой""" + isStageGroupIsIntergroup: Boolean! + + """Идентификатор параллели, к которой относится группа""" + stageId: ID! + + """Наименование предмета""" + subjectName: String! + + """Идентификатор предмета""" + subjectId: ID! + + """Наименование ГКпП""" + stageSubjectGroupName: String! + + """Идентификатор ГКпП""" + stageSubjectGroupId: ID! + + """Время начала урока""" + lessonStartTime: Time + + """Время окончания урока""" + lessonEndTime: Time + + """Идентификатор здания""" + buildingId: ID +} + +"""""" +enum LessonDraftVersion { + """""" + ORIGINAL + + """""" + DRAFT + + """""" + SAVED +} + +"""Драфт расписания по классам""" +type LessonDraftsByStageGroup { + """класс""" + stageGroup: StageGroupCommonInfo! + + """Сортированный список уроков: номер урока - день - предмет""" + lessonDrafts: [LessonDraftV2!]! +} + +"""Карточки уроков, группированные по предмету""" +type LessonDraftsBySubject { + """""" + subject: SubjectCommonInfo! + + """Карточки уроков, группированные по классу""" + lessonDraftsByStageGroups: [LessonDraftsByStageGroup!]! +} + +"""Карточки уроков, группированные по учителю""" +type LessonDraftsByTeacher { + """Учитель""" + teacher: TeacherUserInfo! + + """Карточки уроков, группированные по предмету""" + lessonDraftsBySubjects: [LessonDraftsBySubject!]! +} + +"""Для редактирования урока""" +input LessonInput { + """Идентификатор урока""" + lessonId: ID + + """Дата проведения урока""" + date: DateTime! + + """Идентификатор интервала времени, в который проводится урок""" + lessonTimeslotId: ID! + + """Идентификатор классной комнаты""" + classRoomId: ID + + """Идентфикатор группы класса по предмету""" + stageSubjectGroupId: ID! + + """Идентификатор предмета""" + subjectId: ID! + + """Идентификатор учителя""" + teacherId: UUID! +} + +"""""" +type LessonLearningActivity { + """""" + lessonLearningActivityId: ID! + + """""" + lessonId: ID! + + """""" + stageSubjectGroupId: ID! + + """""" + learningActivity: LearningActivity! + + """""" + position: Int! +} + +"""""" +type LessonLengthType { + """""" + id: ID! + + """""" + lessonLengthType: String! + + """""" + length: Int +} + +"""Заметка с данными урока""" +type LessonNoteExtended { + """Уникальный идентификатор заметки. Например, LessonNote#getLessonNoteId""" + id: ID! + + """ + Форматированный текст заметки урока, например "[название предмета]: [тект заметки]" + """ + text: String! + + """Номер урока""" + lessonNumber: Int! + + """Дата начала урока""" + lessonStartDate: DateTime! + + """Дата окончания урока""" + lessonEndDate: DateTime! +} + +"""Заметка к плану урока""" +type LessonNoteToLessonPlan { + """Идентифкатор Заметки (lesson_notes.lesson_note_id)""" + id: ID! + + """Идентификатор плана урока""" + lessonPlanId: ID! + + """Текст Заметки (lesson_notes.note)""" + text: String! +} + +"""""" +input LessonNoteToLessonPlanInput { + """""" + lessonNoteId: ID + + """""" + lessonPlanId: ID + + """""" + text: String! +} + +"""План урока""" +type LessonPlan { + """Ид плана урока""" + lessonPlanId: ID! + + """Ид урока""" + lessonId: ID + + """Ид таймслота урока""" + lessonTimeslotId: ID + + """Ид модуля""" + goalId: ID! + + """Урок связанный с данным планом был удален""" + isInvalidated: Boolean! + + """У модуля поменяли даты и план теперь в него не входит""" + datesNotInModule: Boolean! + + """Урок закончен""" + isFinished: Boolean! + + """ + идентификатор Группы по Предмету (stage_subject_groups.stage_subject_group_id) + """ + classSubjectId: ID! + + """Список заданий с элементами цели""" + lessonPlanTasks: [LessonPlanTaskWithGoalElementId!] + + """Домашняя работа""" + homework: Homework + + """онлайн-урок к плану урока""" + onlineLessonToLessonPlan: OnlineLessonToLessonPlan + + """заметка к плану урока""" + lessonNoteToLessonPlan: LessonNoteToLessonPlan + + """Тема к плану урока""" + lessonTopicToLessonPlan: LessonTopicToLessonPlan + + """Подборки материалов к уроку""" + selections: [Selection!]! +} + +"""Модель ошибок плана урока""" +type LessonPlanError { + """Текст сообщения""" + errorMessage: String! + + """Текстовый код ошибки""" + errorCode: LessonPlanErrorCode! +} + +"""Текстовый код ошибки учебного плана""" +enum LessonPlanErrorCode { + """Даты модуля изменены""" + GOAL_DATES_CHANGED + + """Модуль удален""" + GOAL_DELETED + + """Группа по предмету удалена""" + SSG_DELETED + + """Урок удален""" + LESSON_DELETED + + """Задание удалено""" + TASK_DELETED + + """Материал удален""" + MATERIAL_DELETED + + """Любая другая ошибка, когда в ответе нужен только текст""" + OTHER +} + +"""""" +input LessonPlanInput { + """Ид плана урока""" + lessonPlanId: ID + + """Ид урока""" + lessonId: ID + + """Ид таймслота урока""" + lessonTimeslotId: ID + + """Ид модуля""" + goalId: ID! + + """ + идентификатор Группы по Предмету (stage_subject_groups.stage_subject_group_id) + """ + classSubjectId: ID! + + """Список заданий с элементами цели""" + lessonPlanTasks: [LessonPlanTaskWithGoalElementIdInput!] + + """Заметка к плану урока""" + lessonNote: LessonNoteToLessonPlanInput + + """Ссылка на онлайн-урок""" + onlineLesson: OnlineLessonToLessonPlanInput + + """Тема к плану урока""" + lessonTopic: LessonTopicToLessonPlanInput + + """Домашняя работа""" + homework: HomeworkInput +} + +"""Блок материала плана урока""" +type LessonPlanMaterial { + """Идентификатор блока материала""" + lessonPlanMaterialId: ID! + + """Идентификатор урока""" + lessonId: ID + + """ + Идентификатор плана на урок, с которым связан материал + Фактически поле является non-nullable. Добавлено как nullable из-за ограничений расширения gql-схемы + """ + lessonPlanId: ID + + """Время начала урока""" + lessonStart: DateTime + + """Признак материала для домашней работы""" + isHomeWork: Boolean! + + """Порядок блока""" + order: Int! + + """Идентификатор item-а каталога""" + catalogItemId: UUID + + """Признак того, что материал удален""" + isMaterialDeleted: Boolean! + + """Имя контента""" + contentName: String + + """Тип контента""" + contentType: AdditionalContentType + + """URL предпросмотра""" + previewUrl: String +} + +"""""" +input LessonPlanMaterialInput { + """Идентификатор блока материала""" + lessonPlanMaterialId: ID + + """Идентификатор урока""" + lessonId: ID + + """Идентификатор материала в сервисе каталога""" + catalogItemId: UUID! + + """Порядок блока в плане""" + order: Int! +} + +""" +Мета информация о плане к уроку для страницы редактирования подборки материалов к нему +""" +type LessonPlanMeta { + """Название класса в параллели (6 А)""" + stageGroupName: String! + + """Название предмета в краткой форме""" + subjectShortName: String! + + """Название модуля""" + goalName: String! + + """Дата и время начала урока""" + start: DateTime + + """ + Идентификатор учителя группы-по-предмету к которой относится данный план к уроку + """ + teacherId: UUID! +} + +"""Блок заметки плана урока""" +type LessonPlanNote { + """Идентификатор блока заметки""" + lessonPlanNoteId: ID! + + """Идентификатор урока""" + lessonId: ID + + """ + Идентификатор плана на урок, с которым связана заметка + Фактически поле является non-nullable. Добавлено как nullable из-за ограничений расширения gql-схемы + """ + lessonPlanId: ID + + """Время начала урока""" + lessonStart: DateTime + + """Текст заметки""" + note: String! + + """Тип заметки""" + lessonPlanNoteType: LessonPlanNoteType! + + """Признак заметки для домашней работы (заметка для студента)""" + isHomeWork: Boolean! + + """Порядок блока""" + order: Int! +} + +"""""" +input LessonPlanNoteInput { + """Идентификатор заметки плана""" + lessonPlanNoteId: ID + + """Идентификатор урока""" + lessonId: ID + + """Текст заметки""" + note: String! + + """Тип заметки""" + lessonPlanNoteType: LessonPlanNoteType! + + """Порядок блока в плане""" + order: Int! +} + +"""Тип заметки для плана урока""" +enum LessonPlanNoteType { + """Заметка учителя""" + PERSONAL_NOTE + + """Заметка для студента""" + STUDENT_NOTE +} + +"""Результат публикации плана урока""" +type LessonPlanPublishingResult { + """Признак успешной публикации""" + isSuccess: Boolean! + + """План урока""" + lessonPlan: LessonPlanV4! +} + +"""Рекомендация к поурочному планированию""" +type LessonPlanRecommendation { + """""" + id: ID! + + """Идентификатор Учебного Модуля""" + moduleId: ID! + + """Уроки в рекомендации""" + lessonRecommendations: [LessonRecommendation!]! +} + +"""Рекомендация к поурочному планированию""" +input LessonPlanRecommendationInput { + """Идентификатор Учебного Модуля""" + moduleId: ID! + + """Уроки в рекомендации""" + lessonRecommendations: [LessonRecommendationInput!]! +} + +"""Блок задания плана урока""" +type LessonPlanTask { + """Идентификатор блока задания""" + lessonPlanTaskId: ID! + + """Идентификатор урока""" + lessonId: ID + + """ + Идентификатор плана на урок, с которым связано задание + Фактически поле является non-nullable. Добавлено как nullable из-за ограничений расширения gql-схемы + """ + lessonPlanId: ID! + + """Время начала урока""" + lessonStart: DateTime + + """Идентификатор модуля""" + goalId: ID + + """Идентификатор элемента цели""" + goalElementId: ID! + + """Идентификатор задания""" + taskId: ID! + + """Текущий статус задания""" + status: TaskStatusEnum + + """Список комментов по заданию""" + taskMessages: [TaskMessage] + + """ + Дедлайн задания (для заданий по ВНЕплановым модулям дедлайном является окончание учебного года, isHardDeadline: false) + """ + taskDeadline: TaskDeadline + + """Оценка по заданию""" + taskMark: SchoolMark + + """Тип задания""" + type: TaskTypeEnum + + """Признак того, что задание удалено""" + isTaskDeleted: Boolean! + + """Наименование""" + title: String + + """Типы проверки задания (Онлайн/Оффлайн)""" + checkTypes: [TaskCheckEnum!] + + """Формат выполнения (Групповой/Индивидуальный)""" + assignmentType: TaskAssignmentEnum + + """Трудоемкость (в минутах)""" + laboriousness: Int + + """Признак задания для домашней работы""" + isHomeWork: Boolean! + + """Порядок блока""" + order: Int! +} + +"""""" +input LessonPlanTaskInput { + """Идентификатор задания плана""" + lessonPlanTaskId: ID + + """Идентификатор урока""" + lessonId: ID + + """Идентификатор элемента цели""" + goalElementId: ID! + + """Идентификатор задания""" + taskId: ID! + + """Порядок блока в плане""" + order: Int! +} + +"""Задание с элементом цели""" +type LessonPlanTaskWithGoalElementId { + """Ид элемента цели""" + goalElementId: ID! + + """Ид задания""" + taskId: ID! + + """Порядок внутри плана модуля""" + order: Int + + """Заданий в контексте студента с персональной информацией о прохождении""" + studentTask: StudentTask +} + +"""Задание с элементом цели""" +input LessonPlanTaskWithGoalElementIdInput { + """Ид элемента цели""" + goalElementId: ID! + + """Ид задания""" + taskId: ID! + + """Порядок внутри плана модуля""" + order: Int +} + +"""План урока для V4""" +type LessonPlanV4 { + """Идентификатор плана урока""" + lessonPlanId: ID! + + """Идентификатор пользователя автора плана""" + authorUserId: UUID! + + """ФИО автора плана""" + authorName: String! + + """Дата изменения""" + updateTs: DateTime! + + """Идентификатор урока""" + lessonId: ID + + """Время начала урока""" + lessonStart: DateTime + + """Время конца урока""" + lessonEnd: DateTime + + """Идентификатор модуля""" + goalId: ID + + """Название модуля""" + goalName: String + + """Планируемая дата начала изучения Учебного Модуля""" + goalStartDate: Date + + """Планируемая дата достижения изучения Учебного Модуля""" + goalEndDate: Date + + """Идентификатор предмета""" + subjectId: ID + + """Название предмета""" + subjectName: String + + """Идентификатор группы по предмету""" + stageSubjectGroupId: ID + + """Имя группы по предмету""" + stageSubjectGroupName: String + + """Тема урока""" + lessonTopic: String + + """Домашнее задание к следующему уроку""" + homework: String + + """Признак видео урока""" + isVideoLesson: Boolean! + + """Ссылка на видео урок""" + videoLessonLink: String + + """Тип видеоконференции""" + videoconferenceType: VideoconferenceType + + """Признак опубликованного плана""" + isPublished: Boolean! + + """Признак архивного плана""" + isArchived: Boolean! + + """Признак расшаренного плана""" + isShared: Boolean! + + """Блоки заметок""" + lessonPlanNotes: [LessonPlanNote!]! + + """Блоки заданий""" + lessonPlanTasks: [LessonPlanTask!]! + + """Блоки материалов""" + lessonPlanMaterials: [LessonPlanMaterial!]! + + """Список ошибок плана урока""" + errors: [LessonPlanError!]! +} + +"""""" +input LessonPlanV4Input { + """Идентификатор плана урока""" + lessonPlanId: ID + + """Идентификатор предмета""" + subjectId: ID + + """Идентификатор группы по предмету""" + stageSubjectGroupId: ID + + """Идентификатор урока""" + lessonId: ID + + """Идентификатор модуля по которому составляется план""" + goalId: ID + + """Тема урока""" + lessonTopic: String + + """Домашнее задание к следующему уроку""" + homework: String + + """Признак видео урока""" + isVideoLesson: Boolean! + + """Ссылка на видео урок""" + videoLessonLink: String + + """Тип видеоконференции""" + videoconferenceType: VideoconferenceType + + """Блоки материалов новые и измененные""" + materialsToUpdate: [LessonPlanMaterialInput!] + + """Блоки материалов для удаления""" + materialsToRemove: [ID!] + + """Блоки заметок новые и измененные""" + notesToUpdate: [LessonPlanNoteInput!] + + """Блоки заметок для удаления""" + notesToRemove: [ID!] + + """Блоки заданий новые и измененные""" + tasksToUpdate: [LessonPlanTaskInput!] + + """Блоки заданий для удаления""" + tasksToRemove: [ID!] +} + +"""План урока для V4""" +type LessonPlanV4Response { + """""" + lessonPlan: LessonPlanV4 + + """""" + responseStatus: HttpStatus! + + """""" + errorMessage: String +} + +"""""" +enum LessonProgressStatus { + """Ученику назначен урок""" + ASSIGNED + + """Ученик сделал или выполнил все задания в уроке""" + DONE +} + +"""Урок в рекомендации к поурочному планированию Учебного Модуля""" +type LessonRecommendation { + """""" + id: ID! + + """Порядок урока внутри рекомендации""" + lessonOrder: Int! + + """Задания в Уроке""" + lessonRecommendationTasks: [LessonRecommendationTask!]! +} + +"""Урок в рекомендации к поурочному планированию Учебного Модуля""" +input LessonRecommendationInput { + """Порядок урока внутри рекомендации""" + lessonOrder: Int! + + """Задания в Уроке""" + lessonRecommendationTasks: [LessonRecommendationTaskInput!]! +} + +"""Задание в уроке в рекомендации к поурочному планированию""" +type LessonRecommendationTask { + """""" + id: ID! + + """Идентифкатор задания""" + taskId: ID! + + """Порядок задания внутри урока""" + taskOrder: Int! + + """Задания""" + task: Task! +} + +"""Задание в уроке в рекомендации к поурочному планированию""" +input LessonRecommendationTaskInput { + """Идентифкатор задания""" + taskId: ID! + + """Порядок задания внутри урока""" + taskOrder: Int! +} + +"""""" +type LessonSet { + """""" + lessonId: ID! + + """""" + lessonDate: DateTime! + + """""" + lessonPlanId: ID + + """признак что урок в будущем""" + isLessonInFuture: Boolean +} + +"""""" +type LessonShort { + """идентификатор урока""" + id: ID! + + """Дата урока""" + date: Date! +} + +"""Тема к плану урока""" +type LessonTopicToLessonPlan { + """Идентифкатор темы (lesson_topic.lesson_topic_id)""" + id: ID! + + """Идентификатор плана урока""" + lessonPlanId: ID! + + """Тема (lesson_topic.topic)""" + topic: String! +} + +"""""" +input LessonTopicToLessonPlanInput { + """""" + lessonTopicId: ID + + """""" + lessonPlanId: ID + + """""" + topic: String! +} + +""" +В результате проверки цепочки уроков на возможность редактирования +некоторые уроки должны быть: +- удалены (сокращение периода ряда уроков/отредактированная дата урока ранее текущей даты/другой академ. год/дубли уроков) +- досозданы (увеличение периода ряда уроков) +- отредактированы +Этот enum содержит коды выполняемых операций над уроками. +""" +enum LessonTransferOperationCode { + """ + В результате редактирования периода ряда уроков + дата урока становится ранее текущей даты. Урок необходимо удалить. + """ + DELETE_LESSONS_BEFORE_CURRENT_DATE + + """ + В результате сокращения периода ряда уроков + дата урока выходит за окончание даты повторения. Урок необходимо удалить. + """ + DELETE_LESSONS_REDUCED_ROW_DATE_RANGE + + """ + В результате редактирования периода ряда уроков + дата урока переносится на другой академический год. Урок необходимо удалить. + """ + DELETE_LESSONS_IN_ANOTHER_ACADEMIC_YEAR + + """ + В результате редактирования ряда уроков были найдены дубликаты. + Дубликаты уроков необходимо удалить. + """ + DELETE_DUPLICATES + + """ + Создание урока(ов). В результате редактирования периода ряда уроков + возникла необходимость досоздать уроки до даты повторения + """ + CREATE + + """ + Обновление урока(ов). В результате редактирования цепочки уроков + необходимо обновить уроки + """ + UPDATE +} + +"""Результат проверки редактирования цепочки уроков""" +type LessonTransferValidationResult { + """Код выполняемой операции над уроком""" + validationCode: LessonTransferOperationCode! + + """Детальное сообщение о выполняемой операции над уроком""" + validationMessage: String! + + """ + Уроки, над которыми должно быть произведено действие (удаление/редактирование). Null если это операция создания + """ + lessonsToModify: [Lesson!] + + """ + Даты, для которых должны быть созданы уроки. Null если это не операция создания + """ + lessonCreateOnDate: [Date!] +} + +"""Уроки, пересекающиеся по времени, сгруппированные по периоду""" +type LessonsByPeriod { + """""" + period: Period! + + """""" + lessons: [ExtendedLesson!]! +} + +"""уроки и заданные для них учебные активности""" +type LessonsWithLearningActivities { + """""" + lesson: Lesson! + + """""" + lessonPlanId: ID + + """""" + lessonLearningActivities: [LessonLearningActivity]! +} + +"""""" +type LevelModule { + """Идентификатор уровня""" + id: ID! + + """""" + level: String! + + """Целевой уровень выбранный студентом""" + studentTargetGoalLevel: Boolean! + + """Статус закрытого/выполненного уровня""" + levelStatus: Boolean! + + """Задания уровня""" + tasks: [TaskLevelModule!]! +} + +"""Успеваемость учеников по уровням системы заданий модуля""" +type LevelPerformance { + """Идентификатор уровня""" + levelId: ID! + + """Численное обозначение уровня учебного модуля""" + level: Float! + + """прогресс учеников по уровню""" + studentLevelPerformance: [StudentLevelPerformance!]! + + """задания уровня""" + levelTasks: [LevelTask!]! +} + +"""Задания уровня""" +type LevelTask { + """Задание""" + task: Task! + + """ + Информация об элементе цели к которому привязано задание в рамках системы заданий модуля + """ + goalElementInfo: LinkedGoalElementInfo + + """статусы задания""" + studentStatuses: [StudentTaskStatus!]! +} + +"""""" +type License { + """""" + id: ID! + + """""" + name: String! + + """""" + description: String! +} + +"""""" +type LineConnectorAnswerBody { + """Ответ""" + answer: [LineConnectorAnswerCardPair!]! +} + +"""""" +input LineConnectorAnswerBodyInput { + """""" + answer: [LineConnectorAnswerCardPairInput!]! +} + +"""""" +type LineConnectorAnswerCardPair { + """Идентификатор карточки""" + leftCardId: ID! + + """Идентификатор пары""" + rightCardId: ID! + + """Правильно/неправильно""" + correct: Boolean! +} + +"""""" +input LineConnectorAnswerCardPairInput { + """Идентификатор левой карточки""" + leftCardId: ID! + + """Идентификатор правой карточки""" + rightCardId: ID! +} + +"""""" +input LinkModuleAndLevelInput { + """""" + studyModuleId: ID! + + """""" + level: Float! +} + +"""""" +input LinkSlotInput { + """идентификатор Слота, к которому будет привязываться Задание""" + slotId: ID! + + """флаг обязательности Заадния в Слоте""" + mandatory: Boolean! + + """Тип Набора Заданий, к которому принадлежит Слот""" + taskSetType: PlaylistType! + + """Сквозной порядковый номер задания в модуле""" + order: ID! +} + +"""Информация о Элементе Цели, к которому привязано Задание""" +type LinkedGoalElementInfo { + """Идентификатор (skill.skill_id)""" + id: ID! + + """Буква Элемента Цели""" + letter: String + + """Буква Элемента Цели""" + number: String + + """Описание Элемента Цели.""" + studentDescription: String! + + """Пример достижения Элемента Цели (Я могу...)""" + studentExample: String! +} + +"""Локальный курс""" +type LocalCourse { + """Идентификатор локального курса""" + localCourseId: ID + + """Глобальный курс""" + globalCourse: GlobalCourse + + """Название курса""" + courseName: String + + """Тип сущности, на которую назначен курс""" + assignedEntityType: LocalCourseAssignedEntityType + + """Идентификатор сущности, на которую назначен курс""" + assignedEntityId: String + + """Название сущности, на которую назначен курс""" + assignedEntityName: String + + """ + Идентификатор плана, к которому опционально может быть привязан курс (для обратной совместимости) + """ + stageSubjectGroupPlanId: ID + + """Дата/время начала курса""" + startDate: DateTime + + """Дата/время начала регистрации на курс""" + startRegisterDate: DateTime + + """Дата/время окончания регистрации на курс""" + endRegisterDate: DateTime + + """Флаг, показывающий, доступен ли курс студентам для прохождения""" + isPublished: Boolean + + """Количество проектов""" + projectCount: Int + + """Тип выполнения""" + courseType: CourseType + + """Признак отсутствия (игнорирования) выставленных периодов для курса""" + isDeadlineFree: Boolean + + """Проекты курса""" + localCourseGoals: [LocalCourseGoal!] +} + +"""Типы сущностей, на которые можно назначить курс""" +enum LocalCourseAssignedEntityType { + """Группа класса по предмету в плане""" + STAGE_SUBJECT_GROUP_IN_PLAN + + """Группа класса по предмету""" + STAGE_SUBJECT_GROUP +} + +"""""" +type LocalCourseCompareGlobalCourseResult { + """локальный и глобальный курс имеют один и тот же набор модулей""" + moduleEquals: Boolean! + + """ + локальный и глобальный курс имеют один и тот же набор конструкторов и их значения одинаковы + """ + moduleConstructorEquals: Boolean! +} + +"""Цели локального курса""" +type LocalCourseGoal { + """Идентификатор цели локального курса""" + localCourseGoalId: ID + + """Идентификатор цели""" + goalId: ID! + + """Название цели""" + goalName: String! + + """Тип проекта (групповой, индивидуальный)""" + assignmentType: TaskAssignmentEnum + + """ + "Регистрация" + """ + signUpDate: DateTime + + """ + "Начало выполнения" + """ + beginDate: DateTime + + """ + "Дедлайн" + """ + deadlineDate: DateTime + + """ + "Проверка" + """ + checkDate: DateTime + + """Просмотр контента""" + isContentAvailable: Boolean! + + """Правила подсчета даты и времени изменённого модуля/проекта""" + rules: StagePlanRules! + + """Тип выполнения""" + executionType: ModuleExecutionType + + """Настройки команд""" + teamSettings: TeamSettings + + """ + Флаг, указывающий на эквивалентность правил для конструктора в глобальном и локальном курсах + """ + equivalentConstructors: Boolean + + """дедланй проекта внутри курса""" + deadlineFree: Boolean + + """Порядковый номер""" + order: Int +} + +"""Информация по цели локального курса в окне Projects""" +type LocalCourseGoalInformation { + """Идентификатор цели локального курса""" + localCourseGoalId: ID! + + """Идентификатор цели""" + goalId: ID! + + """Название цели""" + goalName: String! + + """Описание цели""" + description: String! + + """Часы на проект""" + projectHours: Int! + + """ + "Регистрация" + """ + signUpDate: DateTime + + """ + "Начало выполнения" + """ + beginDate: DateTime + + """ + "Дедлайн" + """ + deadlineDate: DateTime + + """ + "Проверка" + """ + checkDate: DateTime + + """Просмотр контента""" + isContentAvailable: Boolean! + + """Тип выполнения""" + executionType: ModuleExecutionType! + + """Очки опыта за выполнение цели""" + finalPoint: Int! + + """Процент выполнения цели""" + finalPercentage: Int! + + """Статус цели""" + status: DisplayedGoalStatus! + + """Количество использованных попыток выполнения""" + retriesUsed: Int + + """Всего количество попыток выполнения на модуль""" + retrySettings: ModuleAttemptsSettings + + """deadline в проекте глобального курса""" + deadlineFree: Boolean +} + +"""""" +input LocalCourseGoalInput { + """Идентификатор цели локального курса""" + localCourseGoalId: ID + + """ + "Регистрация" + """ + signUpDate: DateTime + + """ + "Начало выполнения" + """ + beginDate: DateTime + + """ + "Дедлайн" + """ + deadlineDate: DateTime + + """ + "Проверка" + """ + checkDate: DateTime + + """Идентификатор модуля""" + goalId: ID! + + """Порядковый номер цели""" + order: ID! + + """Наличие дедлайнов в проекте курса""" + deadlineFree: Boolean +} + +"""Информация по локальному курсу в окне Projects""" +type LocalCourseGoals { + """Идентификатор локального курса""" + localCourseId: ID! + + """Идентификатор глобального курса""" + globalCourseId: ID! + + """Название предмета""" + courseName: String! + + """Тип выполнения""" + courseType: CourseType! + + """Цели локального курса""" + localCourseGoals: [LocalCourseGoalInformation!] + + """Вычисляемый статус курса""" + displayedCourseStatus: DisplayedCourseStatus +} + +"""""" +input LocalCourseInput { + """Идентификатор локального курса""" + localCourseId: ID + + """Идентификатор глобального курса""" + globalCourseId: ID! + + """Тип сущности, на которую назначен курс""" + assignedEntityType: LocalCourseAssignedEntityType! + + """Идентификатор сущности, на которую назначен курс""" + assignedEntityId: String! + + """Дата/время начала плана""" + startDate: DateTime + + """Дата/время начала регистрации на курс""" + startRegisterDate: DateTime + + """Дата/время окончания регистрации на курс""" + endRegisterDate: DateTime + + """Флаг, показывающий, доступен ли курс студентам для прохождения""" + isPublished: Boolean + + """Признак отсутствия (игнорирования) выставленных периодов для курса""" + isDeadlineFree: Boolean + + """Цели плана""" + localCourseGoals: [LocalCourseGoalInput!]! +} + +"""Модель для отображения процесса сохранения локального курса""" +type LocalCourseS21SavingProgress { + """Курс находится в процессе сохранения""" + isSavingInProgress: Boolean! + + """Кол-во успешно обновленных студентов""" + studentsUpdatedSuccess: Int! + + """Всего студентов для обновления локального курса""" + studentsTotal: Int! + + """Кол-во студентов с ошибкой обновления""" + studentsUpdatedFail: Int! + + """Является ли процесс сохранения возвращением к предыдущей версии""" + isRollback: Boolean! +} + +"""Критерии поиска локальных курсов""" +input LocalCourseSearchCriteriaInput { + """Название глобального курса""" + globalCourseName: String + + """Тип сущности, на которую назначен курс""" + assignedEntityType: LocalCourseAssignedEntityType + + """Массив идентификаторов классов, на которые назначен курс""" + stageSubjectGroupIds: [ID!] + + """Параметры сортировки""" + sortingFields: [SortingField!] + + """Параметры пагинации""" + paging: PagingInput! +} + +"""Результат поиска локальных курсов""" +type LocalCourseSearchResult { + """Общее количество найденных локальных курсов""" + count: Int! + + """Найденные локальные курсы с учетом пагинации""" + localCourses: [LocalCourse!]! +} + +""" +Инфромация о локальных настройках мультикампусности, о всех параллелях и классах для текущей школы +""" +type LocalMulticampusSettingAndAllStagesAndStageSubjectGroups { + """Настройки мультикампусности для кампуса""" + multicampusSetting: MulticampusSetting! + + """Массив параллелей""" + stages: [Stage!]! + + """Массив классов (групп классов по предмету)""" + stageSubjectGroups: [StageSubjectGroup]! +} + +"""Тип медиатеки с локализированым названием""" +type LocalizedTagType { + """Тип""" + type: MediatekaTagType! + + """Локализированное название""" + localizedName: String! +} + +"""Возможные локации команды для группового задания""" +enum LocationEnum { + """Глобальная""" + GLOBAL + + """Параллель""" + CAMPUS + + """Класс""" + STAGE +} + +"""""" +type LoggingMetrics { + """""" + attendance: String! + + """""" + logging: String! + + """""" + planning: String! + + """""" + coverage: String! +} + +"""Типы логических соединений""" +enum LogicalLinkTypeEnum { + """""" + OR + + """""" + AND +} + +"""Результат валидации логинов пользователей""" +type LoginValidationResponse { + """Логины прошли валидацию, здесь не может быть повторяющихся значений""" + validLogins: [String!]! + + """ + Логины которые не прошли валидацию(либо дубликаты либо не найдены) + Может содержать несколько одинаковых значений + """ + errorLogins: [String!]! + + """Если хотя бы один логин задублирован тут будет true""" + hasDuplicates: Boolean! + + """Если хотя бы один логин не был найден тут будет true""" + hasNotFound: Boolean! +} + +"""""" +type LogoPass { + """""" + login: String! + + """""" + password: String! +} + +"""""" +input ManageUserGroupsInput { + """Идентификаторы групп""" + groups: [ID!]! + + """Множество пользователй для добавления или удаления из группы""" + users: [UUID!]! +} + +"""Показатели для карты региона""" +type MapMetrics { + """""" + attendance: Int + + """""" + logging: Int + + """""" + planning: Int + + """""" + diaries: Int +} + +"""Показатели по административной единице для карты региона""" +type MapMetricsByAdministrativeUnit { + """""" + administrativeUnitId: Int! + + """""" + administrativeUnitName: String! + + """""" + mapMetrics: MapMetrics! +} + +"""""" +type MarkEntry { + """""" + periodName: String! + + """""" + markValue: String + + """""" + startDate: Date + + """""" + endDate: Date +} + +""" +Модель описывает асинхронную задачу на перевод классов в другой учебный год +""" +type MassTransferTask { + """Модель асинхронной задачи""" + asyncTask: AsyncTask! + + """Набор некритичных ошибок, возникших в процессе перевода""" + result: [String!] +} + +""" +Ответ с бэка на виджет "Таблица (выбор одного)" +""" +type MatrixAnswerBody { + """Строка с json-структурой внутри""" + answer: String +} + +""" +Отправляемый ответ на виджет "Таблица (выбор одного)" +""" +input MatrixAnswerBodyInput { + """Строка с json-структурой внутри""" + answer: String +} + +""" +Ответ с бэка на виджет "Таблица (множественный выбор)" +""" +type MatrixDropdownAnswerBody { + """Строка с json-структурой внутри""" + answer: String +} + +""" +Отправляемый ответ на виджет "Таблица (множественный выбор)" +""" +input MatrixDropdownAnswerBodyInput { + """Строка с json-структурой внутри""" + answer: String +} + +"""""" +enum MediatekaContentType { + """Информационный материал (учусь учиться)""" + INFORMATIONAL_MATERIAL + + """Подготовительный материал (для подготовки к олимпиадам)""" + PREPARATIVE_MATERIAL + + """Межпредметный материал (привязанный к нескольким предметам)""" + INTERDISCIPLINARY_MATERIAL +} + +"""""" +input MediatekaContentTypeFilter { + """Тип материала""" + contentType: AdditionalContentType! + + """Идентификаторы подтипов материала""" + subtypeIds: [ID!] +} + +"""Теги полученные по фильтру и общее количество""" +type MediatekaFilteredTagsWithCount { + """Коллекция тегов""" + tags: [MediatekaTag!]! + + """Общее количество""" + totalCount: Int! +} + +"""Сортировка айтемов""" +input MediatekaItemSorting { + """Тип сортировки""" + name: MediatekaItemSortingName! + + """Направление сортировки""" + order: MediatekaItemSortingOrder! +} + +"""Типы сортировки""" +enum MediatekaItemSortingName { + """дата изменения""" + MODIFY_DATE + + """дата создания""" + CREATE_DATE + + """название""" + NAME + + """лучшее совпадение""" + RELEVANCE +} + +"""Направление сортировки""" +enum MediatekaItemSortingOrder { + """по возрастанию""" + ASC + + """по убыванию""" + DESC +} + +"""Статус элемента""" +enum MediatekaItemStatus { + """опубликован""" + PUBLISH + + """черновик""" + DRAFT +} + +"""Параметры фильтрации элементов каталога""" +input MediatekaItemsFilter { + """Фильтр по учебным параллелям""" + stages: [AdditionalContentStage!] + + """Фильтр по учебным параллелям (Stage)""" + stageIds: [ID!] + + """Фильтр по регионам""" + regionIds: [UUID!] + + """Фильтр по предметам""" + subjectIds: [ID!] + + """Фильтр по создателям""" + creatorsIds: [UUID!] + + """ + Фильтр по мете "Добрые дела" + """ + goodAffairMeta: String + + """Фильтр по типу материалов медиатеки""" + mediatekaContentTypes: [MediatekaContentType!] + + """ + Фильтр по типу материалов. deprecated, нужно использовать extendedContentTypeFilter. + При использовании значения будут конвертироваться в extendedContentTypeFilter с пустыми подтипами + """ + contentTypes: [AdditionalContentType!] + + """ + Фильтр по нижней границе даты начала мероприятия/айтема (работает только при включенном эластике) + """ + startDate: Date + + """ + Фильтр по верхней границе даты начала мероприятия/айтема (работает только при включенном эластике) + """ + endDate: Date + + """Фильтр по формату проведения мероприятия""" + contentFormat: AdditionalContentFormat + + """Фильтр по учебным материалам (учебникам)""" + isEducationalMaterial: Boolean + + """ + Фильтр по добавлению материала в закладки. true - материал должен быть в закладках у текущего + пользователя, false/null - игнорировать (работает только при включенном эластике) + """ + isBookmarkedForCurrentUser: Boolean + + """Полнотекстовый поиск""" + textSearch: String + + """ + Фильтр по признаку активности/неактивности (архивности) материала + Значение по умолчанию true + """ + active: Boolean + + """ + Фильтр по статусу айтема (опубликованный или черновик), если передан пустой список, то выводятся только опубликованные + """ + statuses: [MediatekaItemStatus!] + + """Родительская категория для фильтрации (с учетом потомков)""" + parentCategoryId: ID + + """ + Фильтр по типам материалов и их подтипам. Рекомендуется явно устаналивать. Если не установить явно, то будут использованы + типы по умолчанию: [AUDIO, VIDEO, PAPER, LINK, BOOK, COURSE, DOCUMENT, PRESENTATION, IMAGE, OLYMPIAD, CONTEST, CLUB] + """ + extendedContentTypeFilter: [MediatekaContentTypeFilter!] + + """Фильтр по мягким навыкам""" + softSkillIds: [ID!] + + """Фильтр по подборке""" + selectionId: UUID + + """Фильтр по подборкам которые надо исключить""" + excludeSelectionIds: [UUID!] + + """Сортировка айтемов""" + sorting: MediatekaItemSorting + + """Фильтр по тегам""" + tagIds: [ID!] + + """Выбор оператора для фильтра тегов, если true, то OR, иначе AND""" + tagFilterUnion: Boolean + + """Тип задания""" + taskTypes: [TaskTypeEnum!] + + """Фильтр по статусу верификации""" + productionStatuses: [ContentEntityProductionStatus] + + """""" + visibilityScopes: [ScopeEnum!] + + """""" + preparative: Boolean + + """ + Для поиска itemId по goalId иди taskId + Для поиска goalId должен быть префикс GOAL. пример GOAL.123 + Для поиска taskId должен быть префикс TASK. пример TASK.456 + """ + externalContentIds: [String!] +} + +"""Параметры фильтрации элементов каталога (Иннополис)""" +input MediatekaItemsInnopolisFilter { + """Фильтр по учебным параллелям (Stage)""" + stageIds: [ID!] + + """Фильтр по предметам""" + subjectIds: [ID!] + + """ + Фильтр по добавлению материала в закладки. true - материал должен быть в закладках у текущего + пользователя, false/null - игнорировать (работает только при включенном эластике) + """ + isBookmarkedForCurrentUser: Boolean + + """Фильтр по подборке""" + selectionId: UUID + + """Сортировка айтемов""" + sorting: MediatekaItemSorting + + """Фильтр назначенных на класс (группу) модулей для Учителя""" + stageSubjectGroupId: ID + + """Фильтр модулей в планах у Ученика""" + plannedModulesOnly: Boolean + + """Фильтр по статусу модуля у Ученика""" + studentModuleStates: [StudentModuleState!] + + """Полнотекстовый поиск""" + textSearch: String + + """Фильтр по материалам""" + itemIds: [UUID!] +} + +"""Связанные с текущим тегом теги""" +type MediatekaLinkedTags { + """Тег для которого агрерированы связи""" + tag: MediatekaTag! + + """Дети""" + children: [MediatekaTag!]! + + """Родители""" + parents: [MediatekaTag!]! + + """Двунаправленная связь""" + bidirectional: [MediatekaTag!]! +} + +"""""" +type MediatekaMutations { + """создает новый элемент каталога""" + createItem( + """параметры нового материала""" + itemSpec: SubjectContentInput! + + """стоит ли сразу опубликовывать материал""" + publishAfterCreate: Boolean! + ): ContentItem! + + """обновляет существующий элемента каталога""" + updateItem(itemId: UUID!, itemSpec: ContentItemUpdateInput!): ContentItem! @deprecated(reason: "Переход от AdditionalContentStage к Stage. Использовать updateItemV2, будет удалено после 01.09.2021") + + """обновляет существующий элемента каталога""" + updateItemV2(itemId: UUID!, itemSpec: ContentItemUpdateInputV2!): ContentItem! + + """публикация ранее неопубликованного (черновика) материала""" + publishItem(itemId: UUID): UUID! + + """добавить в избранное материал""" + addBookmark(itemId: UUID!): ItemBookmarkStatus! + + """убрать из избранного материал""" + removeBookmark(itemId: UUID!): ItemBookmarkStatus! + + """архивация элемента каталога""" + archiveItem(catalogItemId: UUID!): UUID! + + """восстановление элемента каталога""" + unarchiveItem(catalogItemId: UUID!): UUID! + + """Восстановить список item'ом""" + batchUnarchive(itemIds: [UUID!]!): ItemBatchResult! + + """Архивация списка item'ов""" + batchArchive(itemIds: [UUID!]!): ItemBatchResult! + + """fix catalog item's meta: create tmp table for queue""" + fixCreateTmp: FixDdlResult! + + """fix catalog item's meta: drop tmp table for queue""" + fixDropTmp: FixDdlResult! + + """fix catalog item's meta: run fix""" + fixMeta(limit: Int): FixSliceResult! +} + +"""""" +type MediatekaProperties { + """""" + moduleSelections: ModuleSelectionsProperties! + + """доступность мутаций управления элементами каталога""" + itemManagement: ItemManagementProperties! + + """""" + selectionManagement: SelectionsManagementProperties! + + """""" + subjectChipListEnabled: Boolean! + + """Включен ли режим ПМО (флаг edu.service.catalog.pmo.enabled)""" + pmoEnabled: Boolean! + + """Включен ли режим Лайт (флаг edu.service.catalog.lite.enabled)""" + liteEnabled: Boolean! + + """Настройки платных материалов""" + purchase: PurchaseProperties! + + """Включен ли режим полнотекстового поиска""" + fullTextSearchEnabled: Boolean! + + """Доступ к дополнительным материалам""" + additionalMaterialsEnabled: Boolean! + + """ + Есть ли доступ к разделу "Моя мастерская" + (фича флаг включения "Моей мастерской" + включение режима ПМО в медиатеке) + """ + myWorkroomEnabled: Boolean! + + """Отображение заданий для роли Ученик""" + displayTaskEnabled: Boolean! + + """Добавление модулей/тем в план под ролью Учитель""" + addModuleToPlanEnabled: Boolean! + + """рекомендуемые материалы включены""" + recommendedMaterialsEnabled: Boolean! + + """ + Отображение раздела медиатеки "Учусь учиться" + """ + learnLearningEnabled: Boolean! + + """ + Отображение раздела медиатеки "Учителю" + """ + teacherAidsEnabled: Boolean! +} + +"""""" +type MediatekaQueries { + """Получение рекомендованных материалов для студента""" + getRecommendedMaterials( + """Параметры пагинации""" + page: PagingInput! + ): ItemPageModel! + + """""" + countRecommendedMaterials: Int! + + """Поиск элементов каталога по заданным фильтрам""" + searchItems( + """Фильтр""" + filter: MediatekaItemsFilter + + """Параметры пагинации""" + page: PagingInput! + ): ItemPageModel! + + """Поиск элементов каталога по заданным фильтрам""" + searchItemsInnopolis( + """Фильтр""" + filter: MediatekaItemsInnopolisFilter + + """Параметры пагинации""" + page: PagingInput! + ): ItemPageModel! + + """""" + countItems( + """Фильтр""" + filter: MediatekaItemsFilter + ): Int! + + """""" + countItemsInnopolis( + """Фильтр""" + filter: MediatekaItemsInnopolisFilter + ): Int! + + """Получение списка категорий элементов каталога""" + getItemCategories( + """категория""" + parentCategory: ID + + """подкатегория""" + childCategoryId: ID + ): [ItemCategory!]! + + """Получение плоского списка категорий, не в виде дерева""" + getFlatItemCategories: [ItemCategory!]! + + """ + Получение категории, соответствующей указанному типу контента. + Может быть null, если не существует категории, подходящий под указанный тип + """ + getCategoryForContentType(contentType: AdditionalContentType!): [ItemCategory!]! + + """Получение подборок для медиатеки""" + getContentSelectionSet(selectionType: SelectionType, page: PagingInput!): [ContentSelection!]! + + """Получение подборки материала""" + getContentSelection(selectionId: UUID!): ContentSelection + + """Получение сводную информацию пользователя по его ибранному""" + getPersonalBookmarkStatistics: BookmarkStatistics! + + """Получить набор прав для Медиатеки""" + getProperties: MediatekaProperties! + + """получить предметы для медиатеки""" + getMediatekaSubjects: [Subject!]! + + """получить облако тегов""" + getMediatekaTagsWithLinks(tenant: UUID!): MediatekaTagsWithLinks! + + """получить облако тегов (с иерархией по фильтру)""" + getMediatekaTags(filter: FilterTags): [TagHierarchyElement!]! + + """получить теги используя фильтр""" + getTagsByFilter( + """Фильтр""" + filter: MediatekaTagsFilter! + + """Параметры пагинации""" + page: PagingInput! + ): MediatekaFilteredTagsWithCount! + + """получить родственников для конкретного тега с фильтрацией""" + getTagRelativesWithFiltering(filter: MediatekaTagsWithLinksFilter!): MediatekaLinkedTags! + + """получить родственников для конкретных тегов с фильтрацией""" + getTagsRelativesWithFiltering(filter: MediatekaTagsWithLinksFilter!): [MediatekaLinkedTags!]! + + """получить список типов тегов с локализацией типы тегов""" + getLocalizedTagTypes: [LocalizedTagType!]! + + """ + Получить идентификатор тенанта, в рамках которого работает текущий пользователь. Это может быть + его школа (для пользователей, работающих в рамках школы, вроде учителей, БА, учеников) + или значение заголовка tenant (если у пользователя есть соответствующая фроль) + """ + getCurrentTenant: ID + + """catalog item's meta fix status""" + fixStatus: FixStatus! + + """Получение содержимого книги в медиатеке (Лайт)""" + getBookContents( + """Идентификатор книги (элемента каталога)""" + itemId: ID! + + """Информация о запрашиваемой странице""" + page: PagingInput + ): [ContentItem!]! + + """Получение айтемов по их идентификаторам""" + getContentItemsByIds( + """Идентификаторы элементов каталога""" + itemIds: [ID!]! + + """""" + isActive: Boolean + ): [ContentItem!]! + + """Получение списка типов книг""" + getBookTypes: [ContentSubtype!]! + + """Получение списка мягких навыков""" + getMediatekaSoftSkills: [SoftSkill!]! + + """Получение списка типов заданий""" + getTaskTypes: [TaskType!]! + + """""" + getInnopolisDigitalContent(filter: InnopolisDigitalContentFilter!): [InnopolisDigitalContent!]! + + """""" + getVisibilityScopes: [ScopeEnum!]! + + """Получение доступных для создания материала уровней видимости""" + getAvailableScopesForCreating: [ScopeEnum!]! + + """Получение доступных для обновления материала уровней видимости""" + getAvailableScopesForUpdating: [ScopeEnum!]! +} + +"""Тег медиатеки""" +type MediatekaTag { + """Идентификатор""" + id: ID! + + """Текст""" + name: String! + + """Тип""" + type: MediatekaTagType! + + """Тенанты к которым относится тег""" + tenants: [UUID!]! + + """Локализированый тега""" + localizedTagType: LocalizedTagType! +} + +"""""" +enum MediatekaTagLinkDirection { + """Родитель""" + PARENT + + """Ребенок""" + CHILD + + """Двунаправленная связь""" + BIDIRECTIONAL +} + +"""Связь между тегами в облаке""" +type MediatekaTagToTagLink { + """Идентификатор""" + id: ID! + + """Тег от которого идет связь""" + tagFromId: ID! + + """Тег к которому идет связь""" + tagToId: ID! + + """Тип связи между тегами""" + type: MediatekaTagToTagLinkType! +} + +"""Тип связи между тегами""" +enum MediatekaTagToTagLinkType { + """Иерархическая""" + HIERARCHIC + + """Горизонтальная""" + SAME_LEVEL +} + +"""Тип тега в медиатеке""" +enum MediatekaTagType { + """Тег старого образца""" + TAGS_OLD + + """Предмет""" + SUBJECT + + """Секция""" + SECTION + + """Тема""" + TOPIC + + """Элемент""" + ELEMENT + + """Группа подборок""" + SELECTION_GROUP +} + +"""Фильтр тегов медиатеки""" +input MediatekaTagsFilter { + """Тенант для которого нужно искать теги""" + tenant: UUID + + """Строка поиска""" + searchString: String + + """Тип искомого тега""" + types: [MediatekaTagType!]! +} + +"""Облако тегов со связями между тегами""" +type MediatekaTagsWithLinks { + """Теги""" + tags: [MediatekaTag!]! + + """Связи между тегами""" + links: [MediatekaTagToTagLink!]! +} + +"""Фильтр тегов и связей медиатеки""" +input MediatekaTagsWithLinksFilter { + """Тенант для которого нужно искать теги""" + tenant: UUID + + """Айди тегов для поиска по тегам""" + tagIds: [ID!] + + """Айди тега для поиска по тегу""" + tagId: ID + + """Тип связи для которой происходит поиск""" + linkType: MediatekaTagToTagLinkType! + + """Направление поиска""" + directions: [MediatekaTagLinkDirection!]! +} + +"""""" +input MentorCheckInput { + """""" + orderNumber: Int! + + """""" + percentage: Int! +} + +"""""" +type MentorFeedBacksPercentage { + """""" + orderNumber: Int! + + """""" + percentage: Int! +} + +"""""" +type Message { + """Идентификатор сообщения""" + id: ID! + + """Текст Сообщения""" + text: String! + + """Дата создания сообщения""" + creationTime: DateTime! + + """Дата изменения сообщения""" + modifyTime: DateTime! + + """Сообщение текущего пользователя""" + ownMe: Boolean! + + """Сообщение ребенка текущего пользователя""" + ownMyChild: Boolean! + + """Автор сообщения""" + author: User! + + """Сообщение помечено как удаленное""" + removed: Boolean! + + """Сообщение не редактирумое""" + readOnly: Boolean! +} + +"""Источник сообщения к Заданию""" +enum MessageSource { + """Сообщение создано под ролью Учителя""" + TEACHER + + """Сообщение создано под ролью Студента""" + STUDENT + + """Сообщение создано внешней системой""" + EXTERNAL_SYSTEM +} + +"""поддерживаемые метрики""" +enum Metric { + """Количество выполненных заданий""" + COMPLETED_TASK_QUANTITY + + """Количество проверенных заданий""" + REVIEWED_TASK_QUANTITY + + """Количество всех пройденных модулей""" + COMPLETED_MODULE_QUANTITY + + """Количество всех пройденных модулей выше целевого""" + COMPLETED_MODULE_ABOVE_PLAN_LEVEL_QUANTITY + + """Количество пройденных модулей после окончания обучения""" + POST_GRADUATE_COMPLETED_MODULE_QUANTITY + + """Количество пройденных модулей выше целевого после окончания обучения""" + POST_GRADUATE_COMPLETED_MODULE_ABOVE_PLAN_LEVEL_QUANTITY +} + +"""тип сравнения значений метрик""" +enum MetricComparatorType { + """тип сравнения значения метрики - чем больше, тем лучше""" + GREATER_IS_BETTER + + """тип сравнения значения метрики - чем меньше, тем лучше""" + LOWER_IS_BETTER +} + +"""""" +type MetricInfo { + """""" + id: ID! + + """""" + metric: Metric! + + """""" + metricDescription: String! + + """""" + metricComparatorType: MetricComparatorType! +} + +"""значение метрики для периода и типа метрики""" +type MetricValue { + """""" + metric: Metric! + + """количество""" + value: Int! + + """баллы""" + score: Int! +} + +"""""" +type MigrationToCatalogResult { + """""" + processed: [UUID!]! + + """""" + total: Int! + + """""" + errors: Int! +} + +"""""" +type MigrationToCatalogResultV2 { + """""" + processed: [ID!]! + + """""" + total: Int! + + """""" + errors: Int! +} + +"""""" +type MilestoneReport { + """Данные проекта""" + project: Project! + + """Время и дата ответа""" + answerDateTime: DateTime + + """Ссылка на ответы (список файлов)""" + answerFiles: [AnswerFile!] + + """Балл""" + score: Int + + """Статус прохождения""" + grade: AcceleratorProjectGrade + + """Дата и время изменения""" + modifiedTs: DateTime + + """Идентификатор пользователя, который внес изменения""" + modifiedUserId: UUID + + """Список участников проекта""" + memberModelList: [TeamMember] +} + +"""""" +input MilestoneReportFilter { + """Строка поиска по имени проекта""" + nameSearch: String + + """Дата ответа""" + answerDate: DateTime + + """Балл""" + score: Int + + """Строка поиска по имени ответа""" + answerName: String + + """Статус прохождения""" + grade: AcceleratorProjectGrade + + """Школа""" + orgUnitId: UUID + + """Проектный поток""" + projectFlowId: UUID +} + +"""Причина ошибки в тексте задания""" +type MisprintReason { + """Идентифкатор причины""" + id: ID! + + """Название ошибки""" + name: String! +} + +"""Сообщение пользователя об ошибке в тексте задания""" +type MisprintReport { + """Идентификатор сообщения""" + id: ID! + + """В каком задании содержится ошибка в тексте.""" + task: Task + + """Пользователь, оставивиший сообщение об ошибку в тексте.""" + user: User! + + """Текст в котором содержится ошибка в тексте.""" + text: String! + + """Исправление, которое предложил пользователь.""" + correctText: String! + + """С какого символа начинается опечатка.""" + selectionStart: Int! + + """Длина выделенного текста опечатки.""" + selectionLength: Int! + + """Дата и время сообщения об ошибке в тексте в UTC.""" + createTs: DateTime! + + """Причины опечатки""" + reasonIds: [ID!]! + + """Комментарий исполнителя""" + executorComment: String + + """Статус жалобы""" + status: ComplaintAndSystemErrorStatus! + + """путь к скриншоту в файлохранилище""" + screenshotUrl: String + + """url страницы, на которую была написана жалоба""" + pageUrl: String + + """Роль пользователя.""" + userRole: ROLES + + """Школа пользователя.""" + School: School +} + +"""""" +input MisprintReportInput { + """""" + taskId: ID + + """""" + reasonIds: [ID!]! + + """""" + text: String! + + """""" + correctText: String! + + """""" + selectionStart: Int! + + """""" + selectionLength: Int! + + """""" + screenshotUrl: String + + """""" + pageUrl: String + + """""" + userRole: ROLES + + """""" + userSchoolId: ID +} + +"""""" +type MobilePhoneEditInfo { + """ + Номер телефона, который мы хотим подтвердить, пусто если мы не находимся + в состоянии подтверждения + """ + mobileNumberForVerification: String + + """Сколько попыток осталось""" + attemptsRemain: Int! + + """Сколько секунд до посылки нового кода""" + secondsRemain: Int! + + """Включена ли смс верификация при редактировании телефона""" + smsVerificationEnabled: Boolean! +} + +"""""" +type ModularPlanningQueries { + """Получение информации о модулях из дефолтных Систем заданий""" + getModuleDetails( + """id модулей""" + moduleIds: [ID!]! + + """id ГПП (для расчета рекомендуемой продолжительности)""" + stageSubjectGroupId: ID! + ): ModuleDetailsResponse! + + """Получение информации о модулях в Персональном Плане или Плане на Класс""" + getPlanModuleDetails( + """id ГПП""" + stageSubjectGroupId: ID! + + """id ученика в Подгруппе""" + studentInSubgroupId: ID + ): ModuleDetailsResponse! + + """Получение информации о модулях в Плане на Параллель""" + getStagePlanModuleDetails( + """id ГПП""" + stageSubjectGroupId: ID! + ): ModuleDetailsResponse! + + """ + по идентификатору Предмета (subjects.subject_id) и идентифкатору параллели (stages.stage_id) + только те группы, в которых учитель преподает + """ + getClassSubjectsTaughtByTeacherBySubjectIdAndStageId(subjectId: ID!, stageId: ID!): [ClassSubject!]! +} + +"""Информация о всех достиженияx Ученика в рамках Учебного Модуля""" +type ModuleAchieveInfo { + """Флаг - достигнут/не достигнут""" + isAchieved: Boolean! + + """Дата и Время достижения""" + date: Date + + """дробное значение максимально достигнутого Уровня Учебного Модуля""" + maxAchievedLevel: Float! + + """ + информация по прогрессу достижений всех Уровней в рамках Учебного Модуля + """ + levelsAchieveInfo: [ModuleLevelAchieveInfo!]! +} + +"""Настройки повторного прохождения проекта""" +type ModuleAttemptsSettings { + """Формула подсчета финальной оценки с учетом пройденных попыток""" + attemptCountingFormula: AttemptCountingFormulaEnum! + + """Максимальное Кол-во попыток прохождения проекта""" + maxModuleAttempts: Int + + """Флаг неограниченного кол-ва попыток""" + isUnlimitedAttempts: Boolean! +} + +"""Настройки повторного прохождения проекта для сохранения""" +input ModuleAttemptsSettingsInput { + """Формула подсчета финальной оценки с учетом пройденных попыток""" + attemptCountingFormula: AttemptCountingFormulaEnum! + + """Максимальное Кол-во попыток прохождения проекта""" + maxModuleAttempts: Int + + """Флаг неограниченного кол-ва попыток""" + isUnlimitedAttempts: Boolean! +} + +"""Награда, которая выдается за закрытие модуля""" +type ModuleAward { + """module_award_id""" + id: ID! + + """Награда""" + award: Award! + + """При каком условие выдается""" + moduleAwardType: ModuleAwardTypeEnum! + + """Сколько наград выдается""" + power: Int! + + """ID модуля, за закрытие которого выдается награда""" + goalId: ID! +} + +"""Награда за выполения модуля на целевом или выше уровне""" +input ModuleAwardInput { + """""" + awardId: ID! + + """""" + moduleAwardType: ModuleAwardTypeEnum! +} + +"""При каком условии награда выдается за модуль""" +enum ModuleAwardTypeEnum { + """Закрытие целевого уровня модуля""" + PLANNED_MODULE_LVL + + """Закрытие выше целевого уровня модуля""" + GREATER_THAN_PLANNED_MODULE_LVL +} + +"""Информация на обложке проекта для студента""" +type ModuleCoverInformation { + """Полная информация по проекту""" + moduleInfo: StudentModule! + + """ + Информация по p2p проверкам: длительность и стоимость (для экзамена - null) + """ + groupReviewDetails: StudentTaskAdditionalAttributes + + """ + Информация по p2p проверкам: кол-во от студента/сотрудника (для экзамена - null) + """ + groupReviewCountInfo: TaskReviewCountInfo @deprecated(reason: "Use p2pChecksInfo") + + """Информация по проверкам проекта""" + p2pChecksInfo: P2PChecksInfo + + """ + Кол-во команд ожидающих проверки по групповому проектам (для экзамена - null) + """ + teamsWaitingEvaluationCount: Int + + """Информация об участниках (для экзамена - null)""" + projectTeamMembers: ProjectTeamMembers + + """Является ли текущий пользовать тимлидом (для экзамена - null)""" + isCurrentUserTeamlead: Boolean @deprecated(reason: "Use projectStatistics") + + """""" + currentStudentCount: Int! + + """Кол-во попыток прохождения проекта текущими пользователями""" + retriesOfCurrentStudents: Int! @deprecated(reason: "Use projectStatistics") + + """""" + finishedCount: Int! + + """Кол-во попыток прохождения проекта""" + retriesCount: Int! + + """Текущий накопленный опыт пользователя""" + userExperience: UserExperience! + + """ + Список гибких навыков с макс. кол-вом очков за все задания этого проекта + """ + softSkills: [SoftSkillPoint!]! + + """ + Timeline проекта, список этапов прохождения проекта со статусами и опциональными датами начала/окончания + каждого этапа + """ + timeline: [ProjectTimelineItem!]! + + """Отображается ли студенту его собственный таймлайн проекта""" + isOwnStudentTimeline: Boolean + + """Статистика по проекту""" + projectStatistics: ProjectStatistics + + """Тип решения проекта""" + solutionType: TaskSolutionTypeEnum +} + +"""""" +type ModuleDetails { + """id модуля в плане""" + id: ID + + """id модуля""" + moduleId: ID! + + """название модуля""" + title: String! + + """тип модуля""" + moduleType: ModuleType! + + """запланированная дата начала изучения Учебного Модуля""" + startDate: DateTime + + """запланированная дата достижения Учебного Модуля""" + endDate: DateTime + + """Ожидаемое число дней изучения данной цели в Плане на параллель""" + countOfDays: Int! + + """Является ли дедлайн жестким""" + isHardEndDate: Boolean! + + """Уровень, на котором Учебный Модуль объявляется достигнутым учеником""" + achieveLevel: Float! + + """Трудоемкость Учебного Модуля в часах в рамках текущего Плана""" + laboriousness: Int! + + """Рекомендуемая трудоемкость Учебного Модуля в часах из GoalDTO""" + recommendedLaboriousness: Int! + + """Рекомендуемое учебным планом школы кол-во дней выделенных на модуль""" + recommendedDuration: Int! + + """ + Флаг обязательности Учебного Модуля в рамках конкретного учебного Плана + """ + mandatory: Boolean! + + """Уровни учебного модуля""" + levels: [StudyModuleLevel!]! + + """Количество заданий в текущем плейлисте учебного модуля""" + taskCount: Int! + + """Текущий плейлист модуля (Система заданий)""" + currentPlaylist: TaskSet! + + """Плейлисты, которые доступны для этого модуля""" + availablePlaylists: [TaskSet!]! +} + +"""""" +type ModuleDetailsResponse { + """Признак успешно выполненного назначения Плейлистов""" + isSuccess: Boolean! + + """""" + modulesDetails: [ModuleDetails!]! +} + +""" +Информация о всех достиженияx Ученика в рамках Элемента Учебного Модуля +""" +type ModuleElementAchieveInfo { + """""" + id: ID! + + """идентификатор Элемента Учебного Модуля (skills.skill_id)""" + moduleElementId: ID! + + """Флаг - достигнут/не достигнут""" + achieved: Boolean! + + """Дата и Время достижения""" + achieveDateTime: DateTime + + """описание Элемента для Учителя""" + description: String! +} + +"""тип выполнения модуля""" +enum ModuleExecutionType { + """Учебный модуль""" + SIMPLE + + """Экзаменационный модуль (используется S21)""" + EXAM + + """Индивидуальный проект (используется S21)""" + INDIVIDUAL + + """Групповой проект (используется S21)""" + GROUP + + """ + Lite модуль (строго с одни уровнем цели и одним элементом цели внутри уровня) + """ + LITE + + """Модуль/Проект экзаменационного теста (используется S21)""" + EXAM_TEST + + """Модуль/Проект стажировка (используется S21)""" + INTERNSHIP +} + +"""Модель типов моделя""" +type ModuleExecutionTypeModel { + """Идентификатор типа модуля""" + id: ID! + + """Описание типа модуля""" + description: String! +} + +"""""" +type ModuleInfo { + """""" + moduleId: ID! + + """""" + moduleName: String! +} + +"""""" +type ModuleInfoForPersonalTrajectory { + """Id Модуля""" + goalId: ID! + + """Название Модуля""" + title: String! + + """Тип Модуля""" + moduleType: ModuleType! + + """Id Предмета, к которому относится Модуль""" + subjectId: ID! + + """Название Предмета, к которому относится Модуль""" + subjectName: String! + + """Id Параллели, к которой относится Модуль""" + stageId: ID! + + """Название Параллели, к которой относится Модуль""" + stageName: String! + + """Аватар Модуля""" + avatarUrl: String + + """Обложка Модуля""" + landingUrl: String + + """Идея Модуля""" + idea: String! + + """ + Статус Модуля для Ученика. Если он пустой -- значит Ученик с Модулем еще не взаимодействовал + """ + goalStatus: GoalStatus + + """ + Пройден ли модуль для Ученика (зачтены все уровни до и включая целевой) + """ + isGoalCompleted: Boolean! + + """Мотивационные Задания модуля (сейчас только одно)""" + motivationTasks: [GoalElementTask!]! + + """Пройдена ли рефлексия""" + isReflectionPassed: Boolean! + + """ + Id следующего задания для выполнения в Траектории, если Модуль еще не завершился + """ + nextTaskIdInTrajectory: ID + + """ + Входит ли Mодуль в Большой вызов для Студента (проверяется по id предмета модуля) + """ + isInBigChallengeForStudent: Boolean! + + """Уровни Учебного Модуля и описания навыков в них""" + goalLevels: [GoalLevelInfoAndProgress!]! + + """ + Мягкие Навыки в Модуле и количество Заданий в них в соответствии с Заданиями из Траектории Ученика, + или из минимально необходимого набора заданий назначенной ему Системы Заданий (СЗ) в Модульного Плане, + или из минимально необходимого набора заданий Дефолтной СЗ Модуля, если Модуль Внеплановый + """ + softSkillCounts: [SoftSkillCount!]! + + """Тип Учебного Плана, если он есть для этого Модуля и Ученика""" + planType: PlanTypeEnum! + + """Id Учебного Плана, если он есть для этого Модуля и Ученика""" + planId: ID + + """Id Модуля в Учебном Плане, если он есть для этого Модуля и Ученика""" + planModuleId: ID + + """UserId Учителя для планового модуля""" + teacherUserId: UUID + + """ + Трудоемкость Учебного Модуля в часах из Плана или из GoalDTO, если Плана нет + """ + laboriousness: Int! + + """Дата начала Учебного Модуля из Плана""" + startDate: Date + + """Дата окончания Учебного Модуля из Плана""" + endDate: Date + + """ + Минут до окончания Учебного Модуля из Плана (заполняется, когда приближается endDate) + """ + minutesLeft: Int + + """ + Является ли дедлайн жестким. После истечения жесткого дедлайна нельзя отправлять задания модуля на проверку + """ + isHardEndDate: Boolean! + + """Выбранный Учеником Целевой Уровень""" + targetGoalLevel: Float + + """Максимально зачтенный Ученику Уровень""" + maxAchievedGoalLevel: Float + + """ + Максимально зачтенный Ученику Уровень Модуля по правилам Траектории. + Значение максимально зачтенного Уровня, при котором зачтены и все нижестоящие Уровни, + содержащие Задания в Системе Заданий + """ + trajectoryMaxAchievedLevel: Float + + """Зачтен ли Ученику его Целевой Уровень""" + isTargetGoalLevelAchieved: Boolean! + + """ + Зачтен ли Ученику Уровень выше его Целевого уровня (сравниваются целые значения) + """ + isAchievedLevelHigherThanTarget: Boolean! + + """Создана ли у Ученика полная/валидная Траектория по этому Модулю""" + isValidTrajectoryCreated: Boolean! + + """ + Нужно ли дополнить траекторию (нужно сгенерировать заново в новой мутации) + """ + isTrajectoryNeedsCompletion: Boolean! + + """Изменялась ли СЗ Модуля с момента последнего редактирования Траектории""" + isPlaylistChanged: Boolean! + + """В Модуле нет Заданий""" + isNoTasksInModule: Boolean! +} + +"""Информацию о проекте для p2p-проверки""" +type ModuleInfoP2P { + """Идентификатор проекта""" + moduleId: ID! + + """Название проекта""" + moduleName: String! + + """Тип выполнения""" + executionType: ModuleExecutionType + + """Продолжительность p2p-проверки""" + periodOfVerification: Int! +} + +"""""" +type ModuleInfoResponse { + """Общая информация по Модулю""" + moduleInfo: ModuleInfoForPersonalTrajectory + + """Тип 3Д ассистента""" + assistantDisplayType3D: AssistantDisplayType3D + + """Код результата""" + responseCodes: [PersonalTrajectoryResponseCode!]! +} + +"""Информация о всех достиженияx Ученика в рамках Уровня Учебного Модуля""" +type ModuleLevelAchieveInfo { + """""" + id: ID! + + """идентификатор Уровня Учебного Модуля (goal_levels.goal_level_id)""" + moduleLevelId: ID! + + """Флаг - достигнут/не достигнут""" + achieved: Boolean! + + """Дата и Время достижения""" + achieveDateTime: DateTime + + """дробное значение Уровня""" + level: Float! + + """Процент зачтенных заданий уровня""" + performance: Int + + """ + информация по прогрессу достижений всех Элементов в рамках Элемента Учебного Модуля + """ + elementsAchieveInfo: [ModuleElementAchieveInfo!]! +} + +"""""" +type ModuleSelectionsProperties { + """""" + viewMaterialToModule: Boolean! + + """""" + editMaterialToModule: Boolean! + + """назначение подборки на предмет""" + assignMaterialToSubject: Boolean! + + """ + Доступ к вкладке подборок пользователя при прикреплении материалов в шторке глоб. материалов 2.0 + """ + userSelectionsGlobalMaterialsCurtainEnabled: Boolean! +} + +"""""" +type ModuleStatistics { + """""" + levelName: String! + + """""" + studentsTryModuleBySchool: Int! + + """""" + studentsTryModuleTotal: Int! + + """""" + studentsMaxLevelBySchool: Int! + + """""" + studentsMaxLevelBySchoolPercent: Float! + + """""" + studentsMaxLevelTotal: Int! + + """""" + studentsMaxLevelTotalPercent: Float! + + """""" + studentsWithoutAnyLevBySchool: Int! + + """""" + studentsWithoutAnyLevBySchoolPercent: Float! + + """""" + studentsWithoutAnyLevTotal: Int! + + """""" + studentsWithoutAnyLevTotalPercent: Float! + + """""" + avgPlannedTasksBySchool: Int! + + """""" + avgPlannedTasksTotal: Int! + + """""" + avgPassedTasksBySchool: Int! + + """""" + avgPassedTasksTotal: Int! + + """""" + avgDaysConsumedBySchool: Int! + + """""" + avgDaysConsumedTotal: Int! + + """""" + positiveFeedbacksBySchool: Int! + + """""" + positiveFeedbacksTotal: Int! + + """""" + negativeFeedbacksBySchool: Int! + + """""" + negativeFeedbacksTotal: Int! +} + +"""Наличие заданий в модуле""" +enum ModuleTaskAvailabilityEnum { + """Все""" + ALL + + """С заданиями""" + WITH_TASKS + + """Без заданий""" + WITHOUT_TASKS +} + +"""Количество заданий с определенным статусом в модуле""" +type ModuleTaskStatusWithQuantity { + """идентификатор Учебного Модуля (goals.goal_id)""" + moduleId: ID! + + """Количество заданий с определенным статусом""" + statusQuantity: [TaskStatusWithQuantity!]! +} + +"""тип модуля""" +enum ModuleType { + """Обычный модуль ПМО, созданный через стандартный конструктор""" + PMO_SIMPLE + + """Кастомизированный внешний модуль""" + PMO_CUSTOM +} + +""" +Данные для отчета "Прогресс_прохождения_модулей_предмет_параллель" +""" +type ModulesProgressBySubjectAndStage { + """""" + stageGroupName: String! + + """""" + stageId: Int! + + """""" + subject: String! + + """""" + subjectId: Int! + + """""" + stageSubjectGroupName: String! + + """""" + stageSubjectGroupId: Int! + + """""" + teacherId: UUID! + + """""" + teacherName: String! + + """""" + studentsCount: Int! + + """""" + modulesPlanned: Int! + + """""" + modulesPartPassed: Int! + + """""" + modulesPartPassedPercent: Float! + + """""" + modulesAccepted: Int! + + """""" + modulesAcceptedPercent: Float! + + """""" + modulesSomeTasksExecuted: Int! + + """""" + modulesSomeTasksExecutedPercent: Float! + + """""" + modulesNotStarted: Int! + + """""" + modulesNotStartedPercent: Float! + + """""" + studentsDetails: [ModulesProgressStudentDetails!] +} + +"""""" +type ModulesProgressStudentDetails { + """""" + studentInfo: StudentUserInfo! + + """""" + stageSubjectSubgroupStudentId: Int! + + """""" + modulesPlanned: Int! + + """""" + modulesPartPassed: Int! + + """""" + modulesAccepted: Int! + + """""" + modulesSomeTasksExecuted: Int! + + """""" + modulesNotStarted: Int! +} + +"""""" +input ModulesReportFilter { + """""" + beginDate: Date! + + """""" + endDate: Date! + + """""" + stageGroupIds: [Int]! + + """""" + terbanks: [String] + + """""" + regions: [String] + + """""" + noNameRegion: Boolean! + + """""" + noNameTerbank: Boolean! +} + +"""Мотивационный блок""" +type MotivationBlock { + """Идентификатор (motivation_blocks.motivation_block_id)""" + id: UUID! + + """Идентификатор модуля (goals.goal_id)""" + goalId: ID! + + """Все мотивационные задания модуля""" + motivationTasks: [Task!]! + + """Проблемный вопрос""" + problematicIssue: String! + + """Базовая идея""" + baseIdea: String + + """Секции внутри мотивационного блока""" + motivationBlockSections: [MotivationBlockSection!]! +} + +"""""" +enum MotivationBlockElementType { + """""" + BASE_IDEA + + """""" + PROBLEMATIC_ISSUE + + """""" + MOTIVATION_TASK + + """""" + TEXT + + """""" + VIDEO + + """""" + AUDIO + + """""" + GALLERY + + """""" + MINI_TEST + + """""" + TOP_5 + + """""" + BANNER +} + +"""Мотивационный блок""" +input MotivationBlockInput { + """Идентификатор (motivation_blocks.motivation_block_id)""" + id: UUID + + """Идентификатор модуля (goals.goal_id)""" + goalId: ID! + + """Проблемный вопрос""" + problematicIssue: String + + """Базовая идея""" + baseIdea: String + + """Секции внутри мотивационного блока""" + motivationBlockSections: [MotivationBlockSectionInput!]! +} + +"""Секция внутри мотивационного блока""" +type MotivationBlockSection { + """Идентификатор (motivation_sections.motivation_section_id)""" + id: UUID! + + """ + Идентификатор мотивационного блока (motivation_blocks.motivation_block_id) + """ + motivationBlockId: UUID! + + """Тип шаблона""" + templateType: SectionType! + + """Позиция внутри мотивационного блока""" + position: Int! + + """Количество блоков внутри секции""" + blocksCount: Int! + + """Стиль секции""" + sectionStyle: String + + """Блоки внутри мотивационной секции""" + elements: [MotivationBlockSectionElement!]! +} + +"""Блок данных внутри секции мотивационного блока""" +type MotivationBlockSectionElement { + """Идентификатор секции (motivation_sections.motivation_section_id)""" + motivationSectionId: UUID! + + """Позиция внутри секции""" + position: Int! + + """Контент внутри мотивационного элемента""" + content: String + + """Тип контента внутри мотивационнного блока""" + elementType: MotivationBlockElementType! +} + +"""Элемент секции мотивационного блока""" +input MotivationBlockSectionElementInput { + """Идентификатор секции (motivation_sections.motivation_section_id)""" + motivationSectionId: UUID + + """Позиция внутри секции""" + position: Int! + + """Контент внутри мотивационного элемента""" + content: String! + + """Тип контента внутри мотивационнного блока""" + elementType: MotivationBlockElementType! +} + +"""Секция мотивационного блока""" +input MotivationBlockSectionInput { + """Идентификатор (motivation_sections.motivation_section_id)""" + id: UUID + + """ + Идентификатор мотивационного блока (motivation_blocks.motivation_block_id) + """ + motivationBlockId: UUID + + """Позиция внутри секции""" + position: Int! + + """Тип шаблона""" + templateType: SectionType! + + """Количество блоков внутри секции""" + blocksCount: Int! + + """Стиль секции""" + sectionStyle: String + + """Блоки данных внутри мотивационной секции""" + elements: [MotivationBlockSectionElementInput!]! +} + +"""Настройки мультикампусности для кампуса""" +type MulticampusSetting { + """id кампуса""" + schoolId: UUID! + + """имя кампуса""" + schoolName: String! + + """включена/выключена настройка мультикампусности""" + isActive: Boolean! + + """настройки мультикампусности для параллелей""" + stageDependencies: [StageDependency!]! +} + +""" +Ответ с бэка на виджет "Множественный выбор текста" +""" +type MultipleTextAnswerBody { + """Строка с json-структурой внутри""" + answer: String +} + +""" +Отправляемый ответ на виджет "Множественный выбор текста" +""" +input MultipleTextAnswerBodyInput { + """Строка с json-структурой внутри""" + answer: String +} + +"""""" +type Mutation { + """""" + sc21ProjectFlow: SC21ProjectFlowMutations + + """""" + student: StudentMutations + + """""" + mediateka: MediatekaMutations! + + """""" + parent: ParentMutation + + """""" + gamification: GamificationMutations + + """""" + content: ContentMutations + + """""" + globalPlan: GlobalPlanMutations + + """""" + notificationConfiguration: NotificationConfigurationMutations + + """""" + statisticReport: StatisticReportMutations + + """""" + personalTrajectory: PersonalTrajectoryMutations + + """""" + trajectory: TrajectoryMutations + + """""" + bigChallenge: BigChallengeMutations + + """""" + proforntUiElement: ProforntUiElementMutations + + """""" + schoolSelfConfiguration: SchoolSelfConfigurationMutations + + """""" + sc21BaCalendar: SC21BaCalendarMutations + + """""" + externalLearning: ExternalLearningMutations + + """""" + honorRating: HonorRatingMutations + + """""" + course: CourseMutations + + """""" + sc21StudentTaskCheck: SC21StudentTaskCheckMutations + + """""" + businessAdmin: BusinessAdminMutations + + """""" + regionalDashboard: RegionalDashboardMutations + + """""" + event: EventMutations + + """""" + asyncReport: AsyncReportMutations + + """""" + contentTags: ContentTagsMutations + + """""" + systemAdmin: SystemAdminMutations + + """""" + award: AwardMutations + + """""" + tariffs: TariffsMutations + + """""" + selection: SelectionMutations! + + """""" + team: TeamMutations + + """""" + penalty: PenaltyMutations + + """""" + externalContent: ExternalContentMutations + + """""" + user: UserMutations + + """""" + leaderBoard: LeaderBoardMutations + + """""" + userProfile: UserProfileMutations + + """""" + holyGraph: HolyGraphMutations + + """""" + visitJournal: VisitJournalMutations + + """""" + sc21BaTaskCheck: SC21BaTaskCheckMutations + + """""" + stageGroupMassCreation: StageGroupMassCreationMutations + + """""" + teacher: TeacherMutations + + """""" + apiMigration: ApiMigrationMutations + + """""" + eJournal: EJournalMutations + + """""" + planning: PlanningMutations + + """""" + calendarEvent: CalendarEventMutations + + """""" + accelerator: AcceleratorMutations + + """""" + school21: School21Mutations + + """""" + workshop: WorkshopMutations + + """""" + eventGenerator: EventGeneratorMutations + + """""" + attestationPeriods: AttestationPeriodMutations + + """""" + attestationPeriodMark: AttestationPeriodMarkMutations +} + +"""Информация о текущих и завершенных Домашних Работах ученика""" +type NonExpiredStudentHomeworksInfo { + """Список Домашних Работ для Ученика, разбитый по датам (в зоне школы)""" + homeworksByDate: [StudentHomeworksByDate!]! + + """Признак наличия не завершенных в сорк Домашних Работ""" + expiredHomeworksExist: Boolean! +} + +"""""" +type Note { + """Идентификатор заметки""" + noteId: ID! + + """Текст заметки""" + text: String! + + """Время создания заметки""" + createTime: DateTime! + + """Время обновления заметки""" + updateTime: DateTime! + + """Время планирования заметки""" + scheduledTime: DateTime! + + """Признак завершен ли пункт""" + completed: Boolean! + + """Идентификатор пользователя которому принадлежит заметка""" + userId: UUID! +} + +"""""" +input NoteInput { + """Идентификатор заметки""" + noteId: ID + + """Текст заметки""" + text: String + + """Время планирования заметки""" + scheduledTime: DateTime + + """Признак завершен ли пункт""" + completed: Boolean + + """Идентификатор пользователя которому принадлежит заметка""" + userId: UUID! +} + +"""""" +type Notification { + """""" + id: ID! + + """""" + type: NotificationEnum! + + """""" + goalName: String! + + """""" + taskId: ID! + + """""" + studentId: ID! + + """""" + message: String! + + """""" + author: User! + + """""" + time: DateTime! + + """ + Флаг Выставляется, когда нотификация приходит студенту для взаимопроверки + """ + review: Boolean! + + """ + Идентификатор ученика, выполняющего задание и отправившего его на ревью + """ + reviewInitiatorStudentId: ID + + """""" + wasRead: Boolean! + + """Дополнительная информация по уведомлению (JSON)""" + additionalInfo: String! +} + +"""""" +type NotificationConfigurationMutations { + """""" + saveNotificationUserSettings(settings: [NotificationUserSettingInput!]!): Boolean! + + """Метод включения канала уведомлений""" + activateNotificationChannel(channelId: ID!): Boolean! + + """Метод отключения канала уведомлений""" + deactivateNotificationChannel(channelId: ID!): Boolean! + + """Метод изменяет активность каналов уведомлений для школ""" + editNotificationChannelsForSchools(schoolChannelsList: [SchoolChannelsInput]!): Boolean! + + """""" + saveNotificationGlobalSettings(globalSettingModels: [GlobalSettingInput!]!): Boolean! +} + +"""""" +type NotificationConfigurationQueries { + """""" + getNotificationReadInterval: String! + + """""" + getNotificationUserSettings: [NotificationUserSetting!]! + + """""" + getChannelsBySchoolIds(schoolIds: [UUID!]!): [SchoolChannels!]! + + """""" + getGlobalSettings: [GlobalSetting!]! + + """""" + getChannelsByOrgUnitId(schoolId: UUID!): [Channel!]! + + """""" + getEmailNotificationStatusCount(relatedObjectId: String!, relatedObjectType: String!): [StatusCount!]! +} + +"""""" +enum NotificationEnum { + """""" + BY_ACCEPTED_TASK + + """""" + BY_NEED_CHECK_TASK + + """""" + BY_MESSAGE_TASK + + """""" + BY_AFTER_TASK_ACCEPT_BY_CLASSMATE + + """""" + BY_AFTER_TASK_FAIL_BY_CLASSMATE + + """""" + BY_AFTER_TASK_ACCEPT_BY_SYSTEM + + """""" + BY_TASK_FAILED + + """""" + BY_GLOBAL_NOTIFICATION + + """""" + BY_CHANGE_GROUP_STUDENT_REMOVE_FROM_CLASS_GROUP_BY_SUBJECT + + """""" + BY_CHANGE_GROUP_STUDENT_ADD_IN_CLASS_GROUP_BY_SUBJECT + + """""" + BY_BADGE_NOTIFICATION + + """""" + BY_SYSTEM_UPDATE + + """""" + BY_COOKIES_ADD + + """""" + BY_REVIEWER_FOUND + + """""" + BY_TASK_NEED_CORRECTION + + """""" + BY_MODULE_ACHIEVING + + """""" + BY_MODULE_LEVEL_ACHIEVING + + """""" + BY_MODULE_COMMENT_ADDED + + """""" + BY_MODULE_COMMENT_CHANGED + + """""" + BY_AFTER_CONTROL_WORK_CREATED + + """""" + BY_TIME_TO_START_CONTROL_WORK + + """""" + BY_TIME_TO_END_MODULE + + """""" + BY_GOVERMENT_MARK_STUDY_PERIOD + + """""" + BY_MODULE_CANCELLATION_ACHIEVING + + """""" + BY_PLAN_CHANGED + + """""" + BY_CHANGE_SCHEDULE + + """""" + BY_PERSONAL_OBJECTIVE_COMPLETED + + """""" + BY_MODULE_PLAYLIST_CHANGED + + """""" + BY_STUDY_PERIOD_DATES_CHANGE + + """""" + BY_TIME_TO_START_MODULE + + """""" + BY_ASYNC_REPORT_TASK_COMPLETED + + """""" + BY_DELETE_LESSON_PLAN_SCHEDULE + + """""" + BY_DELETE_LESSON_PLAN_CLASS + + """""" + BY_DELETE_LESSON_PLAN_MODULE + + """""" + BY_DELETE_LESSON_PLAN_TASKS + + """""" + BY_DELETE_LESSON_PLAN_MATERIALS_FROM_MEDIATEKA + + """""" + BY_DELETE_LESSON_PLAN_MODULE_DATE_CHANGE + + """""" + BY_AVATAR_UPDATE + + """""" + BY_ACHIEVEMENT_CREATE + + """""" + BY_REACTION_CREATE + + """""" + BY_COMMENT_CREATE + + """""" + TIME_TO_START_ANXIETY_TEST + + """""" + BY_S21_NOTIFICATION + + """""" + AWARD + + """""" + PROJECT + + """""" + PROFILE + + """""" + EVENT + + """""" + INVITATIONS + + """""" + TRIBES + + """""" + COINS + + """""" + BY_TIME_TO_PASS_REFLECTION + + """""" + TASK_DOWNLOAD_DOCUMENT + + """""" + DOCUMENT_RESIGNING_REGULAR + + """""" + DOCUMENT_RESIGNING_INTRUSIVE +} + +"""""" +type NotificationType { + """""" + id: ID! + + """""" + name: String! + + """""" + description: String + + """""" + groupId: ID! + + """""" + locked: Boolean! + + """""" + tunable: Boolean +} + +"""""" +type NotificationUserSetting { + """""" + groupTypeId: ID! + + """""" + groupTypeName: String! + + """""" + typeId: ID! + + """""" + typeCode: String + + """""" + typeName: String! + + """""" + channelId: ID! + + """""" + channelName: String! + + """""" + channelActive: Boolean + + """""" + channelActiveSystem: Boolean! + + """""" + channelLockedSystem: Boolean! + + """""" + isMutable: Boolean +} + +"""""" +input NotificationUserSettingInput { + """""" + typeId: ID! + + """""" + channelId: ID! + + """""" + channelActive: Boolean +} + +"""Сопоставление типа и количества Уведомлений""" +type NotificationsCountByTypeMap { + """Тип Уведомления""" + notificationType: NotificationEnum! + + """Количество доступных Уведомлений данного типа""" + notificationsCount: Int! +} + +"""""" +type NtoScore { + """""" + userId: UUID! + + """""" + firstName: String! + + """""" + lastName: String! + + """""" + middleName: String + + """""" + stageGroupName: String! + + """""" + scoreProjectAcc: Int! + + """""" + scoreModuleAcc: Float! + + """""" + scoreProjectNto: Int! + + """""" + scoreModuleNto: Float! + + """""" + availableToSend: Boolean! + + """""" + talantId: String + + """""" + dateSendScoreProjectNto: Date + + """""" + statusScoreProject: Boolean + + """""" + dateSendScoreModuleNto: Date + + """""" + statusScoreModule: Boolean +} + +"""""" +type NtoScoreResponse { + """""" + schoolName: String! + + """""" + academicYear: String! + + """""" + countUserActivities: Int! + + """""" + data: [NtoScore]! +} + +"""""" +type NtoSendScoreResponse { + """""" + total: Int! + + """""" + errorCount: Int! + + """""" + errorEvents: [UUID]! +} + +"""""" +type NtoWidget { + """""" + scoreProjectAcc: Int! + + """""" + scoreModuleAcc: Float! + + """""" + totalScoreNto: Float! + + """""" + status: String! +} + +"""""" +type Onboarding { + """""" + onboardingId: ID! + + """Идентификатор шага в сценарии онбординга, на котором остановился юзер""" + currentStepId: ID! + + """Идентификатор сценария онбординга""" + scriptId: ID! + + """Тип онбординга""" + onboardingType: OnboardingType + + """Завершил ли юзер сценарий онбординга""" + isFinished: Boolean! + + """Время завершения онбординга""" + finishedTs: DateTime + + """Статус связывания УЗ""" + isLinkedSuccess: Boolean +} + +"""Тип онбординга""" +enum OnboardingType { + """Онбординг конфигуратора системы""" + BA_ONBOARDING + + """Онбординг иннополиса""" + INNO_ONBOARDING + + """Онбординг критериального оценивания""" + CRITERIAL + + """Онбординг для тренажёров""" + TRAINING + + """Онбординг для критериального оценивания (модальное окно)""" + CRITERIAL_MODAL + + """Онбординг для показа уведомлений об успешном связывании SberID""" + SBERID_LINKED +} + +"""Информация по возвращенному календарному событию""" +type OnlineCalendarEvent { + """Идентификатор события""" + id: UUID! + + """Тип календарного события""" + eventType: CalendarEventType! + + """Тип пользовательской группы участников события""" + groupTypeId: Int! @deprecated(reason: "Have to be changed into nullable field, use participantGroupTypeId field instead. Will be removed in r/32.0.0 version") + + """Тип пользовательской группы участников события""" + participantGroupTypeId: Int + + """Наименование события""" + name: String! + + """Описание события""" + description: String + + """Место проведения/ссылка на онлайн событие""" + location: String! + + """Дата и время начала события""" + startTime: DateTime! + + """Дата и время окончания события""" + endTime: DateTime! + + """Участники события""" + participants: [CalendarEventParticipant!]! + + """Признак активности события""" + active: Boolean! + + """Идентификатор пользователя (userId), создавшего событие""" + creatorId: UUID! + + """Время создания события""" + createdTs: DateTime! + + """Время модификации события""" + modifiedTs: DateTime + + """Признак события на весь день""" + allDayEvent: Boolean! + + """Правило для повторяющегося события""" + recurrenceRule: String + + """До какого числа действует правило для повторяющегося события""" + recurrenceEndTs: DateTime + + """ + Идентификатор основного повторяющегося события (CalendarEvent#id) + для события-исключения из правила + """ + parentCalendarEventId: UUID + + """Имя файла для передачи пользователю""" + fileName: String + + """Файл для календаря пользователя в формате Base64""" + base64Data: String + + """Категория события""" + calendarEventCategory: CalendarEventCategory +} + +""" +Используют Accelerator. Событие в календе, без поддержания правил повторения. +""" +input OnlineCalendarEventInput { + """Идентификатор события""" + id: UUID + + """Тип события (например: 5 - Мои события)""" + eventTypeId: Int! + + """ + Идентификатор типа пользовательской группы, + которые могут быть участниками события (например: 2 - индивидуальная группа пользователей) + """ + groupTypeId: Int! + + """Наименование события""" + name: String! + + """Описание события""" + description: String + + """Место проведения/ссылка на онлайн событие""" + location: String! + + """Дата и время начала события""" + startTime: DateTime! + + """Дата и время окончания события""" + endTime: DateTime! + + """Признак активности события""" + active: Boolean! + + """Идентификатор пользовательной группы организатора события""" + organizerGroupId: UUID + + """ + Признак необходимости выгрузить для пользовательского календаря событие + """ + exportICalendar: Boolean +} + +"""Онлайн-урок""" +type OnlineLessonToLessonPlan { + """Идентификатор онлайн-урока(timetableId)""" + onlineLessonId: ID! + + """Идентификатор плана урока""" + lessonPlanId: ID! + + """Ссылка на онлайн-урок""" + onlineLessonLink: String! + + """Тип видеоконференции для онлайн урока""" + videoconferenceType: VideoconferenceType! +} + +"""""" +input OnlineLessonToLessonPlanInput { + """""" + onlineLessonId: ID + + """""" + lessonPlanId: ID + + """""" + onlineLessonLink: String! + + """""" + videoconferenceType: VideoconferenceType! +} + +"""""" +type OnlineReview { + """Флаг показывающий тип онлайн/офлайн""" + isOnline: Boolean! + + """Информация о видеозаписи проверки""" + video: OnlineReviewVideo +} + +"""""" +type OnlineReviewVideo { + """Идентификатор видео""" + onlineVideoId: ID! + + """Ссылка на видеозапись проверки""" + link: String! + + """Статус загрузки""" + status: StudyProcessFileStatusEnum! + + """Описание статуса""" + statusDetails: String + + """Дата создания/обновления""" + updateDateTime: DateTime! +} + +"""""" +type OrgUnit { + """Идентификатор образовательного учреждения""" + id: UUID! + + """Наименование образовательного учреждения""" + name: String! +} + +"""уровни тенантов""" +enum OrganizationHierarchyType { + """глобальные""" + GLOBAL + + """продуктовые""" + PRODUCT + + """образовательные учреждения""" + EDUCATIONAL_INSTITUTION +} + +"""""" +enum OrganizationType { + """""" + UNKNOWN + + """""" + SCHOOL + + """""" + UNIVERSITY + + """""" + SCHOOL21 + + """""" + ACC + + """""" + BOOTCAMP + + """""" + EDUCONT +} + +"""""" +type OrganizationUnit { + """Ид организационной единицы""" + id: UUID! + + """Тип организационной единицы""" + type: OrganizationUnitType! + + """Полное название орг.единицы""" + fullName: String! + + """Короткое название орг.единицы""" + shortName: String! + + """ + Необязательный параметр. Для школы - идентификатор, для других орг.единиц не определён + """ + identifier: String +} + +"""""" +enum OrganizationUnitType { + """""" + GLOBAL + + """""" + PRODUCT + + """""" + EDUCATIONAL_INSTITUTION +} + +"""""" +type OverallProgress { + """Прогресс в баллах""" + progress: ProgressInfo! + + """Прогресс в процентах""" + percentProgress: PercentProgressInfo! +} + +"""Общая статистика посещаемости""" +type OverallVisitStat { + """Кол-во пропущенных уроков""" + missedLessons: Int! + + """Общее кол-во уроков""" + lessonsNumber: Int! + + """Процент пропуска уроков""" + missedPercentage: Float! +} + +"""Информация о проверках проекта""" +type P2PChecksInfo { + """Количество PRP, требуемое для проверки проекта""" + cookiesCount: Int! + + """Продолжительность проверки проекта""" + periodOfVerification: Int! + + """Информация о количестве проверок в проекте""" + projectReviewsInfo: ProjectReviewsInfo! +} + +"""Информация о p2p проверке по проекту""" +type P2PEvaluationInfo { + """Статус проверки""" + status: ProjectEvaluationStatus! + + """Заполненный чеклист, если проверка была проведена""" + checklist: FilledChecklist +} + +"""""" +type P2pCheckDetailInfo { + """Идентификатор заполненного чек-листа""" + filledChecklistId: ID! + + """Проверяющий пользователь""" + verifier: User! + + """Комментарий к чек-листу""" + comment: String + + """Версия протокола подсчета оценки за p2p""" + assessmentProtocolVersion: Int + + """Протокол подсчета оценки за p2p (json)""" + assessmentProtocolMeta: String + + """Информация о видеозаписи проверки""" + onlineReview: OnlineReview! +} + +"""Информация о p2p блоке проверок""" +type P2pCheckInfo { + """ + Формула p2p. Может быть null, если формула на момент завершения проверки не сохранялась + """ + formula: P2pFormulasType + + """ + Требуемое количество проверок. Может быть null, если формула на момент завершения проверки не сохранялась + """ + requiredCheckCount: Int + + """Экземпляры P2p-проверок""" + p2pInstances: [P2pInstance!]! +} + +"""Общая статистика по слотам студента""" +type P2pCommonStatistic { + """Общее количество созданных слотов""" + eventCount: Int! + + """Общее количество времени, занятое записью на проверку""" + timeWithCheck: Int! + + """Общее количество времени, не занятое записью на проверку""" + timeWithoutCheck: Int! + + """Общее количество успешно завершенных проверок""" + successfullyCompletedCheck: Int! + + """Общее количество назначенных, но не завершенных проверок""" + scheduledNotCompletedCheck: Int! + + """ + Общее количество назначенных проверок, на которые проверяющий не явился + """ + scheduledVerifierIsAbsenceCheck: Int! +} + +"""""" +enum P2pFormulasType { + """""" + MIN + + """""" + AVG + + """""" + MAX +} + +"""Данные для одного часа тепловой карты""" +type P2pHeatCoeffByDayOfWeekByHour { + """День недели от 1 до 7, где 1 - Понедельник""" + dayOfWeekNumber: Int! + + """Конкретный час выбранного дня недели""" + hourOfDay: Int! + + """ + Коэффициент интенсивности цвета на тепловой карте в указанный день и час (от 0 до 5) + """ + heatCoefficient: Int! +} + +"""Данные для тепловой карты по статистике событий студента""" +type P2pHeatMapWithMean { + """Набор значений коэффициентов тепловой карты по дням недели и часам""" + heatCoeffByDayOfWeekByHour: [P2pHeatCoeffByDayOfWeekByHour!]! + + """Среднее значение минут в таймслотах""" + meanMinutes: Int! +} + +"""Данные для тепловой карты по статистике событий студента""" +type P2pHeatMapWithMedian { + """Набор значений коэффициентов тепловой карты по дням недели и часам""" + heatCoeffByDayOfWeekByHour: [P2pHeatCoeffByDayOfWeekByHour!]! + + """Медиана минут в событиях""" + medianMinutes: Int! +} + +"""Модель экземпляра p2p-проверки""" +type P2pInstance { + """Идентификатор заполненного чек-листа""" + id: ID! + + """Логин проверяющего студента""" + reviewerLogin: String! + + """Дата и время начала проверки""" + resultDate: DateTime! + + """Флаг - была ли проведена проверка""" + isCompleted: Boolean! + + """Тип проверки""" + checkType: FilledChecklistCheckType! + + """Набранный при проверке процент""" + receivedPercentage: Int +} + +"""""" +input PagingInput { + """""" + offset: Int! + + """""" + limit: Int! +} + +"""""" +type ParamValue { + """""" + name: String! + + """""" + value: String! + + """""" + val: String + + """""" + description: String! +} + +"""""" +type ParentMutation { + """Создать факты прочтения комментариев""" + createTaskMessageReadFacts(messageIds: [ID!]!): [TaskMessageReadFact!]! +} + +"""Информация о родителе для публичных профилей""" +type ParentPublicData { + """""" + firstName: String! + + """""" + middleName: String + + """""" + lastName: String! + + """""" + avatarUrl: String + + """""" + phone: String +} + +"""Публичный профиль родителя""" +type ParentPublicProfile { + """""" + id: ID! + + """""" + firstName: String! + + """""" + middleName: String + + """""" + lastName: String! + + """""" + avatarUrl: String + + """""" + children: [StudentPublicProfile!]! + + """""" + work: String + + """""" + contacts: [ContactData!]! +} + +"""""" +type ParentQueries { + """""" + getSoftSkillTypeProgress(softSkillTypeId: ID!, userId: ID!): [UserSoftSkillTypeProgress!]! + + """""" + getLastBadges(limit: Int!, userId: ID!): [UserBadgeAward!]! + + """""" + getExperience(userId: ID!): UserExperience! + + """""" + getChildProfile(userId: ID!): Student! + + """Возвращает информацию о Гибких навыках с примерами заданий ученика""" + getChildSoftSkillsAbout( + """идентификатор пользователя ученика""" + childUserId: ID! + ): [StudentSoftSkillAbout!]! + + """""" + getBadges(userId: ID!): [UserBadgeAward!] + + """""" + getExperienceHistory(userId: ID!): [UserExperienceHistory]! + + """""" + getBadgeHistoryById(badgeId: ID!, childUserId: ID!): [UserBadgeAwardHistory!]! + + """""" + getAwardHistoryById(awardId: ID!, childUserId: ID!): [UserAwardHistory!]! + + """""" + getUserAwards(userId: ID!, awardType: AwardTypeEnum): [UserAward!]! + + """""" + getLastUserAwards(userId: ID!, limit: Int!, awardType: AwardTypeEnum): [UserAward!]! + + """Получить фидбек ребёнка по опредлённому заданию или null если его нет""" + getStudentFeedback(childUserId: UUID!, taskId: ID!): Feedback + + """""" + getCalendar(weekStart: String!, weekEnd: String!, childUserId: ID!): Calendar! + + """""" + getNotifications(paging: PagingInput, wasReadIncluded: Boolean, childUserId: ID!): [Notification!]! + + """ + Аналог getNotifications возвращающий только те нотификации, которые имеют привязку к предмету + """ + getDeckWidgetNotificationsByTypes(paging: PagingInput, wasReadIncluded: Boolean, childUserId: ID!, typeIds: [ID!]!): [DeckWidgetNotification!]! + + """""" + getNotificationsCount(wasReadIncluded: Boolean, childUserId: ID!): Int! + + """""" + getDaySchedule(date: String!, childUserId: ID!): [Event!]! + + """""" + getSchedule( + """параметр начала диапазона дат для выборки Уроков (в зоне школы)""" + lessonsFromDate: Date! + + """параметр окончания диапазона дат для выборки Уроков (в зоне школы)""" + lessonsToDate: Date! + + """ + параметр начала диапазона дата+время для выборки Контрольных работ (в зоне UTC) + """ + personalControlWorksFromTime: DateTime! + + """ + параметр окончания диапазона дата+время для выборки Контрольных работ (в зоне UTC) + """ + personalControlWorksToTime: DateTime! + + """идентификатор пользователя Ученика""" + childUserId: ID! + ): Schedule! + + """ + Возвращает заметки к уроку для ученика на следующий учебный день (может совпадать с переданной датой) + """ + getLessonNotesForNextSchoolDay( + """параметр даты, относительно которой ищем следующий учебный день""" + lessonsDate: Date! + + """идентификатор пользователя Ученика""" + childUserId: ID! + ): [LessonNoteExtended!]! + + """""" + getTaskMessages(taskId: ID!, childUserId: ID!): [TaskMessage!]! + + """ + Возвращает количество непрочитанных текущим пользователем комментариев по заданию. Комментарии пользователя не учитываются + """ + getCountUnreadMessages(taskId: ID!, studentId: UUID!): Int! + + """""" + getTasksByIds(ids: [ID!]!, childUserId: ID!): [StudentTask] + + """""" + getPersonalTrajectory(taskId: ID, goalId: ID, childUserId: ID!): PersonalTrajectory + + """""" + getModuleById(goalId: ID!, childUserId: ID!): StudentModule! + + """""" + getAllPlannedModules(childUserId: ID!): [StudentModule!]! + + """""" + getModules(childUserId: ID!): [StudentModulesInSubjectContext!]! + + """""" + getCurrentTasksForCalendar(childUserId: ID!): [StudentTask!]! + + """получение списка отправленных ответов на задание ребенка""" + getTaskAnswers(taskId: ID!, childUserId: ID!): [StudentAnswer!]! + + """""" + getStudentDashboard(date: DateTime!, childUserId: ID!): StudentDashboard! + + """Неагрегированый вариант getStudentDashboard""" + getStudentDashboardParts(date: DateTime!, childUserId: ID!): StudentDashboard! + + """Возвращает список Уведомлений ученика, по его заданиям""" + getRecentStudentTaskNotifications( + """типы Уведомлений""" + notificationTypes: [NotificationEnum!]! + + """ + идентификатор пользователя ученика, для которого запрашиваются Уведомления + """ + childUserId: ID! + + """параметры пагинации""" + paging: PagingInput! + ): RecentTaskNotifications! + + """""" + getAvatarHistoryById(avatarId: ID!, childUserId: ID!): [UserAvatarHistory!]! + + """Возвращает класс ребенка""" + getStudentStageGroup(childUserId: ID!): StageGroup + + """""" + getBadgeHistories(childUserId: ID!): [UserBadgeAwardHistory!]! + + """""" + getAwardHistories(childUserId: ID!): [UserAwardHistory!]! + + """""" + getGridOfModulesBySubjectIDAndStudyPeriodIds(subjectId: ID!, studyPeriodIds: [Int!]!, childUserId: ID!): [StudentModule!]! + + """""" + getGridOfModulesBySubjectID(subjectId: ID!, childUserId: ID!): [StudentModule!]! + + """""" + getCurrentAcademicYearStudyPeriods(childUserId: ID!): [StudyPeriod!]! + + """ + Возвращает информацию о Предметах Ученика в рамках данного Учебного Года + """ + getCurrentAcademicYearSubjects( + """идентификатор пользователя ученика""" + childUserId: ID! + ): AcademicYearSubjects! + + """""" + getPlaylist(goalId: ID!, childUserId: ID!): Playlist! + + """ + Возвращает Персональную Контрольную Работу по идентификатору для ребенка + """ + getPersonalControlWorkById( + """ + идентификатор персональной Контрольной Работы (personal_control_works.personal_control_work_id) + """ + personalControlWorkId: ID! + + """""" + childUserId: ID! + ): PersonalControlWork! + + """ + Возвращает изучаемые предметы с персональной информацией родителю по идентификатору ребенка исходя из текущей даты + """ + getStudentStageSubjects(currentDate: Date!, childUserId: UUID!): [StudentStageSubject!]! + + """ + Вернуть предметы изучаемые учеником в текущем учебном году для урока на заданную дату + """ + getSubjectsForLesson(currentDate: Date!, childUserId: UUID!): [StudentStageSubject!]! + + """Вернуть всю персональную информацию по предмету ученика""" + getStudentStageSubjectBySubjectId(subjectId: ID!, currentDate: Date!, childUserId: UUID!): StudentStageSubject! + + """Вернуть данные по прогрессу рубенка до указанной даты""" + getStudentSubjectInfo( + """дата до которой необходимо получить прогресс""" + currentDate: Date! + + """Идентификатор ребенка-ученика""" + childUserId: UUID! + ): [StudentStageSubject!]! + + """ + Получение информации о плановых и фактических трудозатратах студента и его прогрессе за текущий учебный период + """ + getChildPerformanceDetails(childUserId: ID!): StudentPerformanceDetails! + + """Получение Персональных Целей ученика с определёнными статусами""" + getStudentPersonalObjectivesByStatuses(childUserId: ID!, statuses: [PersonalObjectiveStatusEnum!]!): [PersonalObjective!]! + + """""" + getStudentPersonalObjectivesDetailedByStatuses(childUserId: ID!, statuses: [PersonalObjectiveStatusEnum!]!): [PersonalObjective!]! + + """Получение цели по ее id""" + getStudentPersonalObjectivesDetailedById(childUserId: ID!, id: ID!): PersonalObjective + + """Получение рефлексии по итогам модуля""" + getStudentGoalReflection( + """Идентификатор модуля""" + goalId: ID! + + """Идентификатор ребенка-ученика""" + childUserId: UUID! + ): StudentGoalReflection! + + """Получение реальной оценки трудоемкости задания""" + getStudentEffortEstimation(studentTaskId: ID!, childUserId: UUID!): StudentEffortEstimation + + """Загрузить информацию о итогах модуля.""" + getStudentGoalSummary(goalId: ID!, childUserId: ID!): StudentGoalSummary! + + """Получение информации о состоянии прогресса ученика по предмету""" + getChildSubjectProgressState(childUserId: ID!, subjectId: ID!): StudentSubjectProgressState! + + """ + Получение детальной информации о состоянии прогресса ученика по предмету (с понедельным планом или детальной информацией по цели) + Выводится детальная информация о цели по отстающему предмету в случае ее наличия или понедельный план с данными по заданиям + """ + getChildSubjectProgressStateWithDetails(childUserId: ID!, subjectId: ID!): StudentSubjectProgressState! + + """ + Получить список заданий с трудоемкостью и гибкими навыками для попапа на странице "Предметы" + """ + getStudentTasksForCurrentModulePopup(currentDate: Date!, childUserId: UUID!): [StudentModuleWithTasksModel!]! + + """Возвращает Задания в контексте студента по фильтрам""" + getStudentTasks( + """Идентификатор ребенка-ученика""" + childUserId: UUID! + + """Идентификаторы Студентов (students.student_id)""" + studentIds: [UUID!]! + + """Идентификаторы Учебных Модулей (goals.goal_id)""" + moduleIds: [ID!]! + + """ + Статусы Заданий, по которым фильтруем, если массив пустой считается, что запрос по любому статусу + """ + statuses: [TaskStatusEnum!]! + + """ + Идентификаторы предметов (subjects.subject_id), если массив пустой считается, что запрос по любому предмету + """ + subjectIds: [ID!]! + + """ + Идентификаторы Групп по предмету (stage_subject_groups.stage_subject_group_id), если массив пустой считается, что запрос по любому классу + """ + stageSubjectGroupIds: [ID!]! + + """ + Типы Заданий, по которым фильтруем, если массив пустой считается, что по любому типу + """ + taskTypes: [TaskTypeEnum!]! + + """поля для сортировки""" + sorting: [SortingField!]! + + """параметры пагинации""" + paging: PagingInput! + ): GetStudentTasksResponse! + + """ + Возвращает Задания и нотификации о взаимопроверках в контексте студента по фильтрам + """ + getStudentTasksByFilters( + """Идентификатор ребенка-ученика""" + childUserId: UUID! + + """Статусы задач для фильтров, если не передается берутся все""" + statuses: [TaskStatusEnum!] + + """Тип проверки таски, если не передается берутся все""" + checkTypes: [TaskCheckEnum!] + + """Идентификаторы Предметов""" + subjectIds: [ID!]! + + """Вернет таски с коментами""" + haveComments: Boolean + + """Вернет задания которые являются долгом по модулю""" + moduleDebt: Boolean + + """Опциональная значение поиска по названию задачи""" + title: String + + """поля для сортировки""" + sorting: [SortingField!] + + """Пагинация Сколько заданий нужно возвращать""" + paging: PagingInput! + ): GetStudentTasksDashboardResponse! + + """Получить родителей ребёнка""" + getParentsByChildId(userId: UUID): [User!]! + + """Возвращает информацию о текущих и завершенных Домашних Работах ученика""" + getNonExpiredStudentHomeworks( + """идентификатор пользователя ученика""" + childUserId: ID! + + """ + параметр начала диапазона дат для выборки Домашних Работ (в зоне школы) + """ + deadlineFromDate: Date! + + """ + параметр окончания диапазона дат для выборки Домашних Работ (в зоне школы) + """ + deadlineToDate: Date! + + """Фильтрация по Предмету (может быть пустым)""" + subjectId: ID + ): NonExpiredStudentHomeworksInfo! + + """Возвращает информацию о не завершенных в сорк Домашних Работах ученика""" + getExpiredStudentHomeworks( + """идентификатор пользователя ученика""" + childUserId: ID! + + """Фильтрация по Предмету (может быть пустым)""" + subjectId: ID + + """Поля для сортировки""" + sorting: [SortingField!]! + + """параметры пагинации""" + paging: PagingInput! + ): ExpiredStudentHomeworksInfo! + + """ + Возвращает урок в контексте конкретного студента с персональной информацией. + """ + getStudentLessonById(lessonId: ID!, childUserId: UUID!): StudentLesson! + + """ + Возвращает урок в контексте конкретного студента с сокращенной персональной информацией. + """ + getCurrentStudentLesson(lessonId: ID!, childUserId: UUID!): StudentLessonCompact! + + """ + Возвращает информацию о Домашней Работе Ученика или null в случае, + когда Домашняя Работа не содержит доступных в данный момент для данного Ученика заданий, или текстовой заметки + """ + getHomeworkInfoById( + """идентификатор пользователя ученика""" + childUserId: ID! + + """ИД Домашней Работы""" + homeworkId: ID + ): HomeworkInfo + + """ + Получение одноклассников детей, у которых день рождения в переданную дату + """ + getBirthdayClassmates(filterBirthday: Date!): [User!]! + + """ + Получение статистики по заданиям для dashboard (виджет Чанки-ПМО) облегченная версия метода, + возвращает только идентификаторы заданий вместо самих заданий + """ + getTaskStatisticsIds(childUserId: UUID, schoolId: UUID, subjectIds: [ID]): StudentTaskPmoStatisticsLightweightModel + + """ + Получение статистики для dashboard (виджет Чанки-Лайт) на дату. + Если дата null, то на текущую дату + Если userId null, то для текущего пользователя + """ + getLightTaskStatistics(childUserId: UUID, atDate: Date, schoolId: UUID): StudentTaskLightStatisticsModel + + """Получить классные и домашние работы по id урока""" + getStudentCurrentLessonCWorkHWorkByLessonId(childUserId: UUID!, lessonId: ID!, schoolId: UUID): StudentCurrentLessonCWorkHWork! + + """Получение данных для виджета Градусник Light""" + getSubjectsFinalMarks(childUserId: UUID, atDate: Date, schoolId: UUID, studyPeriodId: ID): [SubjectFinalMarkModel]! + + """Данные для виджета оценок ученика(Лайт)""" + getStudentLightMarks(studentId: ID!, studyPeriodId: ID!): [StudentLightMarkModel!] + + """Данные для виджет Рейтинг ученика""" + getStudentRating(childUserId: UUID, subjectIds: [ID]!, studyPeriodIds: [ID!], schoolId: UUID): [StudentRatingBySubjectModel]! + + """Получение всей информации для градусников ПМО""" + getStudentThermometerPMO(childUserId: UUID!, schoolId: UUID): StudentThermometerPMO + + """Получение посещаемости студента""" + getStudentAttendance(studentId: UUID!, subjectIds: [ID!], studyPeriodIds: [ID!], currentPeriodId: ID!): [StudentAttendanceBySubject]! + + """Возвращает данные для диаграммы Радар (Паутинка)""" + getStudentRadarChartData(childUserId: UUID!, atDate: Date): [StudentRadarChart!]! + + """Возвращает агрегированные данные для диаграммы Радар (Паутинка)""" + getAggregatedStudentRadarChartData(childUserId: UUID!, academicYearId: ID, studyPeriodId: ID): AggregatedStudentRadarChart! + + """Возвращает итоговую оценку ученика по предмету для учебных периодов""" + getStudentStudyPeriodFinalMark(childUserId: UUID!, subjectId: ID, studyPeriodIds: [ID!]): [StudentStudyPeriodFinalMark]! + + """набор оценок, принятых в школе""" + getSchoolMarks: [SchoolMark!]! + + """ + PMO Возвращает итоговую оценку ученика по предмету для учебных периодов + """ + getStudentPmoStudyPeriodFinalMark(childUserId: UUID!, subjectId: ID, studyPeriodIds: [ID!]): [StudentStudyPeriodFinalMark]! + + """Возвращает лист родителей одноклассников ребенка""" + getClassParent(childUserId: UUID!): [ParentPublicProfile]! + + """Получение задач ребенка по идентификаторам задач""" + getStudentTasksByIds(childUserId: ID, tasksIds: [ID!]): [StudentTask] + + """Возвращает данные для построения дневника ученика""" + getStudentDiary( + """Идентификатор пользователя (ребенка)""" + childUserId: UUID! + + """дата начала выборки Уроков (в зоне школы) для дневника""" + fromDate: Date! + + """дата окончания выборки Уроков (в зоне школы) для дневника""" + toDate: Date! + ): StudentDiary! + + """Получение успеваемости ребенка по периодам""" + getStudentStudyPeriodsPerformance(studyPeriodIds: [ID!], attestationPeriodIds: [ID!], childUserId: UUID!): [StudentStudyPeriodsPerformanceResponse!]! + + """Получить желаемый целевой уровень модуля""" + getTargetGoalLevel( + """Модуль для которого загружается целевой уровень""" + goalId: ID! + + """Идентификатор пользователя (ребенка)""" + childUserId: UUID! + ): StudentTargetGoalLevel + + """Возвращает Задания в контексте студента по фильтрам""" + getStudentTasksByTaskStatus( + """Идентификатор студента по которому нужны данные""" + childUserId: ID + + """ + Статусы заданий, по которым фильтруем, если массив пустой считается, что запрос по любому статусу + """ + statuses: [TaskStatusEnum!]! + + """Параметр пагинации""" + paging: PagingInput! + ): GetStudentTasksResponse! + + """ + Запрос наиболее длительной домашней работы из дневника за период. + Если возвращает null, значит нет длительной домашней работы. + Длительная домашняя работы та, у которой время выполнения более 20 минут. + """ + getStudentDiaryLengthyHomework( + """Идентификатор студента по которому нужны данные""" + childUserId: ID + + """Дата начала выборки Уроков (в зоне школы) для дневника""" + fromDate: Date! + + """Дата окончания выборки Уроков (в зоне школы) для дневника""" + toDate: Date! + ): StudentDiaryLengthyHomework + + """ + Возвращает агрегированные данные по навыкам для диаграммы Радар (Паутинка) + """ + getStudentSkillRadarChartData( + """Идентификатор студента по которому нужны данные""" + childUserId: ID! + + """Идентификатор навыка""" + softSkillId: ID + ): AggregatedSkillStudentRadarChart! + + """ + Возвращает данные для построения дневника ученика за период с учетом временной зоны + """ + getStudentDiaryByPeriod( + """Идентификатор пользователя (ребенка)""" + childUserId: UUID! + + """дата и время начала выборки Уроков (в зоне школы) для дневника""" + fromDateTime: DateTime! + + """дата и время окончания выборки Уроков (в зоне школы) для дневника""" + toDateTime: DateTime! + ): StudentDiary! + + """ + Возвращает список академических лет школы. Если не передать schoolId, выдаст по текущей + """ + getAcademicYears(schoolId: ID): [AcademicYear!]! + + """Получение всех возможных критериев""" + getTaskCriteria( + """Идентификатор задания""" + taskId: ID! + ): [Criteria!]! + + """Получить соответствия критериям""" + getTaskCriteriaValues( + """Идентификатор задания""" + taskId: ID! + + """Идентификатор ученика""" + studentId: ID! + + """Подтверждённое соответствие критерию""" + isConfirmed: Boolean + ): [StudentCriteriaValue!]! + + """ + Аналог getNotifications возвращающий только те нотификации, которые имеют привязку к предмету и текущему учебному году + """ + getDeckWidgetNotificationsForCurrentAcademicYear(paging: PagingInput, wasReadIncluded: Boolean, childUserId: ID!, typeIds: [ID!]!): [DeckWidgetNotification!]! + + """Возвращает полную информацию о студенте по userId""" + getStudentsInfo(userId: [UUID!]!): [Student!]! + + """Статистика. Успеваемость ученика для родителей""" + getChildAcademicPerformance(startDate: DateTime!, endDate: DateTime!, childUserId: UUID!, subjectId: Int, currentRole: String): [StudentAcademicPerformance!]! @deprecated(reason: "Использовать getChildAcademicPerformanceExpandedV2") + + """""" + getChildAcademicPerformanceExpanded(startDate: DateTime!, endDate: DateTime!, childUserId: UUID!, currentRole: String): [StudentAcademicPerformanceExpanded!]! + + """""" + getChildAcademicPerformanceExpandedV2(startDate: DateTime!, endDate: DateTime!, childUserId: UUID!, subjectId: Int, currentRole: String): [StudentAcademicPerformanceExpandedV2!]! + + """Статистика. Успеваемость ученика для родителей. Выгрузка в Excel""" + downloadChildAcademicPerformanceExcel(startDate: DateTime!, endDate: DateTime!, childUserId: UUID!, reportDateTime: String!, currentRole: String): ReportExcelFile! + + """ + Статистика. Успеваемость ученика для родителе расширенная. Выгрузка в Excel. + """ + downloadChildAcademicPerformanceExpandedExcel(startDate: DateTime!, endDate: DateTime!, childUserId: UUID!, subjectId: Int, reportDateTime: String!, currentRole: String): ReportExcelFile! @deprecated(reason: "Под удаление. EDU-48885") + + """""" + getStudentsMarksSubjectsDetailed(studyPeriodId: Int!, childUserId: UUID!): StudentFinalMarkSubjectsModel! + + """ + Отчет "Итоговые оценки. Детальный" по ученику и всем предметам с датами + """ + getStudentsMarksSubjectsDetailedByDates(periodStartDate: Date!, periodEndDate: Date!, childUserId: UUID!, currentRole: String): StudentFinalMarkSubjectsModel! + + """Отчет "Итоговые оценки. Детальный" с датами Выгрузка в Excel""" + downloadStudentsMarksResultDetailedExcel(periodStartDate: Date!, periodEndDate: Date!, childUserId: UUID, reportDateTime: String!, academicYearId: ID, currentRole: String): ReportExcelFile! + + """ + Отчет "Успеваемость по эл.журналу" + """ + getChildJournalPerformance(stageId: Int!, studyPeriodId: Int!, childUserId: UUID!): [StudentJournalPerformance!]! + + """Отчет "Успеваемость по эл.журналу" выгрузка в Excel""" + downloadStudentJournalPerformanceExcel(studentJournalPerformanceExcelInput: StudentJournalPerformanceExcelInput!): ReportExcelFile! + + """ + Отчет "Успеваемость по эл.журналу" выгрузка в Excel успеваемости по модулям за год + """ + downloadChildModulePerformanceExcel(startDate: DateTime!, endDate: DateTime!, childUserId: UUID!, reportDateTime: String!, currentRole: String): ReportExcelFile! + + """Отчет "Успеваемость" по Аттестационным периодам""" + getChildAcademicPerformanceByAttestationPeriod(startDate: DateTime!, endDate: DateTime!, closeModuleDate: Date!, childUserId: UUID!, subjectId: Int, currentRole: String): [StudentAcademicPerformance!]! + + """Отчет "Успеваемость" по Аттестационным периодам расширенный""" + getChildAcademicPerformanceByAttestationPeriodExpanded(startDate: DateTime!, endDate: DateTime!, closeModuleDate: Date!, childUserId: UUID!, subjectId: Int, currentRole: String): [StudentAcademicPerformanceExpandedV2!]! + + """ + Отчет "Успеваемость по аттестационным периодам" выгрузка в Excel успеваемости по модулям за год + """ + downloadChildModulePerformanceByAttestationPeriodExcel(startDate: DateTime!, endDate: DateTime!, childUserId: UUID!, reportDateTime: String!, currentRole: String): ReportExcelFile! + + """ + Отчет "Успеваемость по эл.журналу" выгрузка в Excel успеваемости по аттестационным периодам + """ + downloadChildAcademicPerformanceByAttestationPeriodExpandedExcel(startDate: DateTime!, endDate: DateTime!, closeModuleDate: Date!, childUserId: UUID!, subjectId: Int, reportDateTime: String!, currentRole: String): ReportExcelFile! +} + +"""""" +type ParentRole { + """""" + id: ID! + + """""" + schoolId: ID! + + """""" + productId: ID + + """""" + orgUnitId: ID + + """""" + school: SafeSchool! + + """""" + status: RoleStatus! + + """дата активации роли""" + dateStart: DateTime + + """дата деактивации роли""" + dateEnd: DateTime + + """список юзеров - детей""" + children: [User!]! + + """основная информация по детям""" + childUserInfo: [ChildUserInfo!]! + + """является ли роль дефолтной при входе пользователя в приложение""" + isDefault: Boolean! + + """название роли""" + role: ROLES! +} + +"""""" +input ParentRoleInput { + """""" + id: ID + + """""" + schoolId: ID! + + """""" + status: RoleStatus + + """""" + temporaryRoleInput: TemporaryRoleInput + + """""" + children: [ID!] +} + +"""""" +type ParentThemesQueries { + """Вернуть учебные периоды с темами""" + getStudentStudyPeriodWithSubjectThemesBySubjectId(subjectId: ID!, childUserId: ID!): [StudentStudyPeriodWithSubjectThemes!]! + + """Получить модуль лайт по айди модуля и айди ребенка""" + getModuleLightById(goalId: ID!, childUserId: ID!): StudentModuleLight! + + """Вернуть учебные периоды с темами с учетом фильтра по названию тем""" + getStudentStudyPeriodWithSubjectThemesByTextSearch( + """идентификатор пользователя ученика""" + childUserId: ID! + + """идентификатор предмета""" + subjectId: ID + + """строка поиска по названию темы""" + textSearch: String + + """только текущие модули""" + onlyCurrent: Boolean + ): [StudentStudyPeriodWithSubjectThemes!]! +} + +"""Информация о родителе""" +type ParentUserInfo { + """Идентификатор родителя, как пользователя""" + id: ID! + + """ссылка на аватар родителя, как пользователя""" + avatarUrl: String! + + """имя родителя""" + firstName: String! + + """отчество родителя""" + middleName: String + + """фамилия родителя""" + lastName: String! +} + +"""Комментарий к мероприятию от участника""" +type ParticipantEventComment { + """Тип (от участника/ от админа)""" + type: ParticipantEventCommentType! + + """Время создания""" + createTs: DateTime! + + """Комментарий""" + comment: String! +} + +"""""" +enum ParticipantEventCommentType { + """""" + ADMIN + + """""" + PARTICIPANT +} + +"""""" +enum ParticipantEventStatus { + """""" + PENDING_APPROVAL + + """""" + CANCELED_BY_STUDENT + + """""" + APPROVED + + """""" + REJECTED +} + +"""Статус участника события""" +enum ParticipantStatus { + """""" + ORGANIZER + + """""" + PARTICIPANT +} + +"""""" +type PedagogicalTechnique { + """""" + id: ID! + + """""" + name: String! + + """""" + author: String + + """""" + softSkillTypes: [SoftSkillType!] + + """""" + description: String! + + """""" + studentHint: String! + + """""" + teacherHint: String! + + """""" + file: File +} + +"""Штраф Ш21""" +type Penalty { + """Идентификатор штрафа""" + id: ID + + """Оштрафованный пользователь""" + user: User + + """Комментарий""" + comment: String + + """Идентификатор причины штрафа""" + reasonId: ID! + + """Слот отработки""" + penaltySlot: PenaltySlot + + """Статус""" + status: String! + + """Время начала отработки""" + startTime: DateTime + + """Время создания""" + createTime: DateTime! + + """Продолжительность""" + duration: Int! + + """Конфигуратор, создавший штраф""" + adminUser: User +} + +"""""" +input PenaltyInput { + """Комментарий""" + comment: String + + """Продолжительность в часах 2/4/8""" + duration: Int! + + """Идентификатор причины штрафа""" + reasonId: ID! + + """Идентификатор пользователя блокируемого студента""" + studentUserId: UUID! +} + +"""""" +type PenaltyMutations { + """ + -----------------------------Запросы админа----------------------------- + Создание штрафа в Ш21 + """ + createPenalty(input: PenaltyInput!): Penalty! + + """Удвоение штрафа в Ш21""" + doublePenalty(penaltyId: ID!): Penalty! + + """Удаление штрафа в Ш21""" + deletePenalty(penaltyId: ID!): Penalty! + + """Завершение штрафа в Ш21""" + donePenalty(penaltyId: ID!): Penalty! + + """Редактирование штрафа в Ш21""" + updatePenalty(input: UpdatePenaltyInput!): Penalty! + + """ + Создание слотов отработки штрафов, возвращает количество успешно созданных слотов + """ + createPenaltySlots(slots: [PenaltySlotInput!]!): Int! + + """Редактирование слота отработки штрафа""" + updatePenaltySlot(slot: PenaltySlotInput!, slotId: ID!): PenaltySlot! + + """Удаление слота отработки""" + deletePenaltySlot(penaltySlotId: ID!): Boolean + + """ + -----------------------------Запросы студента----------------------------- + Запись студента на отработку штрафа, возвращает номер букинга + """ + setPenaltyBooking(penaltyId: ID!, slotId: ID!): ID! +} + +"""""" +type PenaltyQueries { + """ + -----------------------------Общие запросы------------------------------ + Получить справочник причин для штрафа + """ + getPenaltyReasons: [PenaltyReason]! + + """ + -----------------------------Запросы админа----------------------------- + Получить штрафы + """ + getPenalties(statuses: [String]!, from: DateTime, to: DateTime, studentUserId: UUID, sorting: [SortingField], page: PagingInput!): [Penalty!]! + + """Получить количество штрафов""" + countPenalties(statuses: [String]!, from: DateTime, to: DateTime, studentUserId: UUID): Int! + + """Получить штраф по идентификатору""" + getPenaltyById(penaltyId: ID!): Penalty! + + """Получить слот отработки штрафа по идентификатору""" + getPenaltySlotById(penaltySlotId: ID!): PenaltySlot! + + """Получить слоты отработки штрафов""" + getPenaltySlots(duration: Int, from: DateTime!, onlyFree: Boolean, userId: UUID, penaltyId: Int, sorting: [SortingField], page: PagingInput!): [PenaltySlot!]! + + """Получить количество слотов отработки штрафов""" + countPenaltySlots(duration: Int, from: DateTime!, onlyFree: Boolean, userId: UUID, penaltyId: Int): Int! + + """ + -----------------------------Запросы студента----------------------------- + S21. Получение списка свободных слотов для отработки штрафа + """ + getPenaltyFreeSlots(duration: Int!, page: PagingInput!, sorting: [SortingField]): [PenaltySlot!]! + + """S21. Получение количество свободных слотов для отработки штрафа""" + countPenaltyFreeSlots(duration: Int!): Int! + + """S21. Получение списка штрафов, привязанных к студенту""" + getMyPenalties(statuses: [String]!, from: DateTime, to: DateTime, sorting: [SortingField], page: PagingInput!): [Penalty!]! + + """S21. Получение количества штрафов, привязанных к студенту""" + countMyPenalties(statuses: [String]!, from: DateTime, to: DateTime): Int! +} + +"""Причина штрафа""" +type PenaltyReason { + """""" + id: ID! + + """""" + name: String! +} + +"""Слот отработки штрафа Ш21""" +type PenaltySlot { + """Идентификатор слота""" + id: ID! + + """Время начала""" + startTime: DateTime + + """Время окончания""" + endTime: DateTime + + """Описание""" + description: String + + """Текущая заполненность""" + currentStudentsCount: Int + + """Максимальная емкость слота""" + maxStudentsCount: Int + + """Продолжительность в часах (2,4,8)""" + duration: Int +} + +"""""" +input PenaltySlotInput { + """Продолжительность слота в часах""" + duration: Int! + + """Описание""" + description: String + + """Время начала""" + startTime: DateTime! + + """Время окончания""" + endTime: DateTime! + + """Максимальное число студентов""" + maxStudentsCount: Int! +} + +"""""" +type PercOfActiveStudentsMetrics { + """""" + stage: Int! + + """""" + totalStudentsCount: Int! + + """""" + activeStudentsCount: Int! + + """""" + activeStudentsPercent: Int! +} + +"""""" +type PercentProgressInfo { + """Текущий прогресс по активности в процентах""" + percentProgress: Float! + + """Прогресс по активности за текущую неделю в процентах""" + percentProgressCurrentWeek: Float! + + """ + Текущий прогресс по активности без учета результатов текущей недели в процентах + """ + percentProgressWithoutCurrentWeek: Float! +} + +""" +Период времени, включающий время начала и время окончания какого либо события +""" +type Period { + """""" + periodStartTime: DateTime! + + """""" + periodEndTime: DateTime! +} + +"""""" +type PeriodInfo { + """Название периода""" + periodName: BigChallengePeriod! + + """Начало периода""" + startTimestamp: Int! + + """Конец периода""" + endTimestamp: Int! +} + +"""""" +type Permission { + """""" + permissionId: String! + + """""" + description: String! +} + +""" +Персональнализированная Контрольная Работа назначенная на Студента в Подгруппе +""" +type PersonalControlWork { + """Идентификатор (personal_control_work.personal_control_work_id)""" + id: ID! + + """Контрольная Работа""" + classSubjectControlWork: ClassSubjectControlWork! + + """Учебный Модуль, по которому проводится Контрольная Работа""" + module: StudyModule! + + """ + Дата и Время, в которые Учитель планирует начать Контрольную Работу UTC!!!!! + """ + planTime: DateTime + + """Дата и время начала Контрольной Работы UTC!!!!!""" + startTime: DateTime + + """Дата и время конца Контрольной Работы UTC!!!!!""" + closeTime: DateTime + + """Продолжительность Контрольной в минутах""" + duration: Int! + + """Статус Контрольной""" + status: ControlWorkStatus! + + """Оценка за Конрольную Работу""" + mark: SchoolMark + + """Время когда учитель выставил оценку по контрольной""" + markTime: DateTime + + """Вариант Контрольной назначенный на ученика""" + variant: PersonalControlWorkVariant! + + """Показывается ли содержимое Контрольной Работы ученику""" + visible: Boolean! + + """Идентификатор студента в подгруппе""" + studentInSubgroupId: ID! + + """""" + permissionStatus: Boolean +} + +"""Персонализированный Вариант Контрольной Работы""" +type PersonalControlWorkVariant { + """""" + id: ID! + + """ + Идентификатор Варианта выбранного учеником в Контрольную Работу ( + (stage_subject_group_control_work_variants.stage_subject_group_control_work_variant_id) + """ + classSubjectControlWorkVariantId: ID! + + """Номер варианта""" + number: Int + + """ + Задания Студента, входящие в вариант с персональной информацией о Задании в контексте студента + """ + tasks: [StudentTask!]! +} + +"""""" +type PersonalGoal { + """""" + id: ID! + + """title: String!""" + achievedLevel: Float! + + """""" + timeFrame: GoalTimeFrame! + + """""" + acceptedTasks: Int! + + """""" + totalTasks: Int! + + """""" + playlistName: String! + + """""" + isAchieved: Boolean! + + """added""" + goal: GoalDTO! + + """Признак доступности""" + hasAccess: Boolean! + + """Ученик проходит модуль вне плана""" + outOfPlan: Boolean! +} + +"""Персональная Цель ученика""" +type PersonalObjective { + """Идентификатор Персональной Цели""" + objectiveId: ID + + """Идентификатор Ученика""" + studentId: ID! + + """ + Предмет Персональной Цели + (если применимо) + """ + subject: Subject + + """Тип Персональной Цели""" + objectiveType: PersonalObjectiveTypeEnum! + + """Дата начала Персональной Цели""" + startDate: Date! + + """Дата окончания Персональной Цели""" + endDate: Date + + """Тип Отрезка Персональной Цели (напр. День)""" + chunkType: PersonalObjectiveChunkTypeEnum! + + """Статус Персональной Цели""" + objectiveStatus: PersonalObjectiveStatusEnum! + + """Дата и время фактического завершения Персональной Цели (в зоне UTC)""" + completeTime: DateTime + + """ + Длина (в минутах) рабочего времени в рамках Отрезка Персональной Цели (напр. 45мин в день, если Отрезок представляет день) + (если применимо) + """ + chunkWorkTimeLengthMin: Int + + """Список Отрезков данной Персональной Цели (напр. Дней)""" + chunks: [PersonalObjectiveChunk!]! +} + +""" +Вариант новой Персональной Цели ученика, распланированный для определённого набора желаемых характеристик +""" +type PersonalObjectiveCandidate { + """Дата начала Персональной Цели""" + startDate: Date + + """Дата окончания Персональной Цели""" + endDate: Date + + """ + Кол-во Отрезков, необходимое для завершения Персональной Цели (напр. 5 дней) + """ + chunksToCompleteObjective: Int + + """ + Длинна рабочего времени в рамках Отрезка Персональной Цели в минутах (напр. 30мин в день) + """ + chunkWorkTimeLengthMin: Int + + """ + Признак выхода данной Персональной Цели за пределы текущего Учебного Периода + """ + planExceedsStudyPeriod: Boolean! + + """ + Признак невозможности запланировать Персональную Цель для данного набора характеристик + """ + failedToPlanObjective: Boolean! +} + +""" +Набор вариантов новой Персональной Цели ученика, распланированных в зависимости от желаемых характеристик +""" +type PersonalObjectiveCandidates { + """Предмет (если применимо)""" + subjectId: ID + + """Идентификатор Учебного Периода (если применимо)""" + studyPeriodId: ID + + """Тип Персональной Цели""" + objectiveType: PersonalObjectiveTypeEnum! + + """Тип Отрезка Персональной Цели (напр. День)""" + chunkType: PersonalObjectiveChunkTypeEnum! + + """ + Лимит разрешенного кол-ва Отрезков для завершения Персональной Цели (напр. макс 14 дней) + """ + objectiveChunksLimit: Int + + """ + Варианты Персональной Цели, распланированные для разных желаемых характеристик + """ + objectivePlanCandidates: [PersonalObjectiveCandidate!]! +} + +"""Отрезок Персональной Цели ученика (напр. представляет День)""" +type PersonalObjectiveChunk { + """Идентификатор Отрезка Персональной Цели""" + chunkId: ID + + """Идентификатор Персональной Цели к которой относится данный Отрезок""" + objectiveId: ID + + """Дата начала отрезка""" + startDate: Date! + + """Дата окончания отрезка""" + endDate: Date! + + """ + Список Элементов данного Отрезка Персональной Цели (напр. Заданий ученика) + """ + chunkElements: [PersonalObjectiveChunkElement!]! +} + +"""Элемент Отрезка Персональной Цели ученика (напр. Задание ученика)""" +type PersonalObjectiveChunkElement { + """Идентификатор Элемента Отрезка Персональной Цели""" + chunkElementId: ID + + """ + Идентификатор Отрезка Персональной Цели к которому относится данный Элемент + """ + chunkId: ID + + """Тип данного Элемента Отрезка Персональной Цели (напр. Задание ученика)""" + chunkElementType: PersonalObjectiveChunkElementTypeEnum! + + """ + Длина данного Элемента Отрезка Персональной Цели (напр. трудоёмкость Задания ученика) + """ + chunkElementLengthMin: Int + + """ + Задание Ученика (применимо только для Элемента типа "Задание ученика") + (если применимо) + """ + studentTask: StudentTask + + """ + Идентификатор задания Ученика (применимо только для Элемента типа "Задание ученика") + (если применимо) + """ + studentTaskId: ID + + """Признак завершенности данного Элемента Отрезка цели""" + isFinished: Boolean! + + """Порядковый номер данного Элемента Отрезка цели в рамках отрезка цели""" + orderNumber: Int! +} + +"""Тип Элемента Отрезка Персональной Цели ученика (напр. Задание ученика)""" +enum PersonalObjectiveChunkElementTypeEnum { + """Если Элемент Отрезка цели является Заданием ученика""" + STUDENT_TASK +} + +"""Тип Отрезка Персональной Цели ученика (напр. День)""" +enum PersonalObjectiveChunkTypeEnum { + """ + Если Отрезок Персональной Цели представляет собой "день" + """ + DAY +} + +""" +Код текущего состояния Персональной Цели (в динамике отправки/зачёта заданий) +""" +enum PersonalObjectiveCurrentProgressStateEnum { + """ + Пользователь отправил на проверку посленее не отправленное задание из запланированных на сегодня + (все запланированные задания на сегодня теперь статусах "Зачтено", "Требуется проверка") + """ + ALL_TASKS_SENT_FOR_TODAY + + """ + Пользователь отправил на проверку посленее не отправленное задание из запланированных на сегодня + (все запланированные задания на сегодня теперь статусах "Зачтено", "Требуется проверка"), + и сегодня - последний день Персональной Цели + """ + ALL_TASKS_SENT_FOR_TODAY_THAT_IS_A_LAST_DAY + + """ + Пользователь отправил на проверку посленее не отправленное задание из запланированных вплоть до будущего дня Х + (все запланированные задания на все дни до Х включительно теперь статусах "Зачтено", "Требуется проверка") + """ + ALL_TASKS_SENT_FOR_FUTURE_DAY + + """ + Пользователь отправил на проверку посленее не отправленное задание из запланированных в рамках Персональной Цели + (все запланированные задания в рамках Персональной Цели теперь статусах "Зачтено", "Требуется проверка") + """ + ALL_TASKS_SENT_FOR_PERSONAL_OBJECTIVE + + """ + Пользователь отправил на проверку задание запланированное в рамках Персональной Цели но оно НЕ являлось + последним не отправленным в рамках дня на который оно запланировано + """ + NOT_ALL_TASKS_SENT +} + +"""Информация о текущем состоянии связанной с Заданием Персональной Цели""" +type PersonalObjectiveProgressInfo { + """ + Код текущего состояния Персональной Цели (в динамике отправки/зачёта заданий) + """ + currentProgressState: PersonalObjectiveCurrentProgressStateEnum! + + """ + Кол-во дней, оставшихся до ожидаемого закрытия Цели (начиная с завтрашнего) + """ + daysLeft: Int! + + """Персональная Цель ученика""" + personalObjective: PersonalObjective! +} + +"""Статус Персональной Цели ученика""" +enum PersonalObjectiveStatusEnum { + """""" + IN_PROGRESS + + """""" + COMPLETED + + """""" + CANCELLED + + """""" + FAILED + + """""" + PREPARED +} + +"""Тип Персональной Цели ученика""" +enum PersonalObjectiveTypeEnum { + """ + Если Цель направлена на сокращение отставания по заданиям в рамках предмета + """ + CATCH_UP_ON_SUBJECT_TASKS +} + +"""Персональная Цель ученика с метаданными генерации Цели""" +type PersonalObjectiveWithBuildInfo { + """Персональная Цель ученика. Будет пустой в случае ошибки при создании""" + personalObjective: PersonalObjective + + """ + Признак выхода данной Персональной Цели за пределы текущего Учебного Периода + """ + planExceedsStudyPeriod: Boolean! + + """ + Признак невозможности запланировать Персональную Цель для данного набора характеристик + """ + failedToPlanObjective: Boolean! +} + +"""""" +type PersonalPerformance { + """""" + status: PersonalPerformanceEnum! + + """""" + value: Float! +} + +"""""" +enum PersonalPerformanceEnum { + """Опережает план""" + AHEAD_OF_PLAN + + """Идет по плану""" + ACCORDING_TO_PLAN + + """Отстает от плана""" + BEHIND_THE_PLAN +} + +""" +тип Персонального Плана обучения, по которому будет идти учебный процесс ученика +""" +type PersonalPlan { + """""" + id: ID! + + """статус Плана""" + status: PlanStatusEnum! + + """ + список Учебных Модулей в Плане с привязкой к датам и необходимому для достижения уровню + """ + frames: [PersonalPlanFrame!]! + + """Дата создания плана""" + createTime: DateTime! + + """Дата изменения плана""" + modifyTime: DateTime! + + """Плановая дата начала обучения""" + startDate: Date + + """Плановая дата окончания обучения""" + endDate: Date +} + +"""""" +type PersonalPlanChangeResponse { + """""" + plan: PersonalPlan + + """""" + isSuccess: Boolean! +} + +"""Учебный Модуль внутри Персонального Плана""" +type PersonalPlanFrame { + """""" + id: ID! + + """Запланированная дата начала изучения Учебного модуля""" + startDate: DateTime! + + """Запланированная дата достижения Учебного Модуля""" + endDate: DateTime! + + """ + Является ли дедлайл жестким. После истечения жесткого дедлайна нельзять отправлять задания модуля на проверку + """ + isHardEndDate: Boolean! + + """Уровень, на котором Учебный Модуль объявляется достигнутым учеником""" + achieveLevel: Float! + + """Примерная трудоемкость Учебного Модуля в часах в рамках текущего Плана""" + laboriousness: Int! + + """Учебный Модуль""" + module: StudyModule! + + """Идентификатор Учебного Модуля (goals.goal_id)""" + moduleId: ID! + + """ + Идентификатор Учительского Плейлиста, + назначенного по Учебному Модулю в рамках персонального Плана (teacher_playlists.teacher_playlist_id) + """ + teacherPlaylistId: ID + + """ + Идентификатор Базового Плейлиста, + назначенного по Учебному Модулю в рамках персонального Плана (base_playlists.base_playlist_id) + """ + basePlaylistId: ID + + """ + Плейлист назначенный по Учебному Модулю в рамках классового Плана + (teacher_playlists.teacher_playlist_id или base_playlists.base_playlist_id) + """ + playlist: TaskSet! + + """ + Флаг обязательности Учебного Модуля в рамках конкретного Персонального Плана + """ + mandatory: Boolean! + + """Условия прохождения учебного модуля в плане""" + conditions: [PlanFrameCondition!]! +} + +"""""" +input PersonalPlanFrameInput { + """Запланированная дата начала изучения Учебного модуля""" + startDate: String! + + """Запланированная дата достижения Учебного Модуля""" + endDate: String! + + """ + Является ли дедлайл жестким. После истечения жесткого дедлайна нельзять отправлять задания модуля на проверку + """ + isHardEndDate: Boolean! + + """Уровень, на котором Учебный Модуль объявляется достигнутым учеником""" + achieveLevel: Float! + + """Примерная трудоемкость Учебного Модуля в часах в рамках текущего Плана""" + laboriousness: Int! + + """Учебный Модуль""" + moduleId: ID! + + """ + Флаг обязательности Учебного Модуля в рамках конкретного Персонального Плана + """ + mandatory: Boolean! + + """Условия прохождения Учебного Модуля""" + conditions: [PlanFrameConditionInput!]! + + """Идентификатор Базового Плейлиста (base_playlists.base_playist_id)""" + basePlaylistId: ID + + """ + Идентификатор Учительского Плейлиста (teacher_playlists.teacher_playlist_id) + """ + teacherPlaylistId: ID +} + +"""Модули версии перонального плана на класс""" +type PersonalPlanFrameVersion { + """""" + id: ID! + + """Запланированная дата начала изучения Учебного модуля""" + startDate: DateTime! + + """Запланированная дата достижения Учебного Модуля""" + endDate: DateTime! + + """ + Является ли дедлайл жестким. После истечения жесткого дедлайна нельзять отправлять задания модуля на проверку + """ + isHardEndDate: Boolean! + + """Уровень, на котором Учебный Модуль объявляется достигнутым учеником""" + achieveLevel: Float! + + """Примерная трудоемкость Учебного Модуля в часах в рамках текущего Плана""" + laboriousness: Int! + + """Идентификатор Учебного Модуля (goals.goal_id)""" + moduleId: ID! + + """ + Идентификатор Учительского Плейлиста, + назначенного по Учебному Модулю в рамках персонального Плана (teacher_playlists.teacher_playlist_id) + """ + teacherPlaylistId: ID + + """ + Идентификатор Базового Плейлиста, + назначенного по Учебному Модулю в рамках персонального Плана (base_playlists.base_playlist_id) + """ + basePlaylistId: ID + + """ + Флаг обязательности Учебного Модуля в рамках конкретного Персонального Плана + """ + mandatory: Boolean! +} + +"""Версия персонального плана""" +type PersonalPlanVersion { + """""" + id: ID! + + """""" + frames: [PersonalPlanFrameVersion!]! + + """""" + versionCreateTime: DateTime! + + """""" + versionCreateUser: User! +} + +"""Траектория студента по Учебному Модулю""" +type PersonalTrajectory { + """Идентификатор (personal_trajectories.personal_trajectory_id)""" + id: ID! + + """Количество Заданий в Траектории""" + taskCount: Int! + + """Уровни Учебного Модуля внутри Траектории""" + levels: [PersonalTrajectoryLevel!]! + + """Задачи, по которым Студент проявлял активность вне Траектории""" + pointsOutOfTrajectory: [StudentTask!]! @deprecated + + """Флаг - достаточна ли Траектория для закрытия Уровня Учебного Модуля""" + isEnoughForAchieve: Boolean! + + """Флаг - была ли измененна СЗ после формирования Траектории""" + isPlaylistChanged: Boolean! + + """Дата и время изменения траектории""" + modifyTime: DateTime +} + +"""Элементы Цели внутри Траектории""" +type PersonalTrajectoryGoalElement { + """Идентификатор (skills.skill_id)""" + id: ID! + + """Название Элемента Цели""" + goalELementName: String! + + """Задания внутри Траектории, относящиеся к Элементу Цели""" + points: [PersonalTrajectoryPoint!]! + + """Флаг - закрыт ли Элемент Цели""" + achieved: Boolean! + + """Флаг - достаточна ли Траектория для закрытия Уровня Учебного Модуля""" + isEnoughForAchieve: Boolean! +} + +"""Уровни Учебного Модуля внутри Траектории""" +type PersonalTrajectoryLevel { + """Идентификатор (goal_levels.goal_level_id)""" + id: ID! + + """Флаг - закрыт ли Уровень Учебного Модуля""" + achieved: Boolean! + + """Числовое значение Уровня Учебного Модуля""" + level: Float! + + """Элементы Цели внутри Учебного Модуля внутри Траектории""" + goalElements: [PersonalTrajectoryGoalElement!]! + + """Флаг - достаточна ли Траектория для закрытия Уровня Учебного Модуля""" + isEnoughForAchieve: Boolean! + + """""" + points: [PersonalTrajectoryPoint!]! @deprecated + + """Доступно ли прохождение закрывающего теста""" + isAvailableGoalLevelTest: Boolean! + + """Прогресс студента по закрывающему тесту""" + studentGoalLevelTest: StudentGoalLevelTest +} + +"""""" +type PersonalTrajectoryMutations { + """автогенерация Траектории без смены уровня""" + generateTrajectory( + """Id модуля""" + goalId: ID! + ): PersonalTrajectoryResponse! + + """автогенерация Траектории со сменой уровня""" + saveTargetLevelAndGenerateTrajectory( + """Id модуля""" + goalId: ID! + + """значение Целевого Уровня""" + targetGoalLevel: Float! + ): PersonalTrajectoryResponse! + + """изменение Заданий Элемента цели в Траектории""" + changeTrajectoryPoints( + """Id модуля""" + goalId: ID! + + """""" + pointsToSave: [PersonalTrajectoryPointInput!]! + ): GoalElementTasksResponse! +} + +"""""" +type PersonalTrajectoryPoint { + """ + Идентификатор (personal_trajectory_points.personal_trajectory_point_id) + """ + id: ID! + + """Идентификатор Элемента Цели внутри Траектории (skills.skill_id)""" + goalElementId: ID! + + """ + Идентификатор Уровня Цели внутри Траектории (goal_levels.goal_level_id) + """ + levelId: ID! + + """Задание внутри Траектории""" + studentTask: StudentTask! + + """Сквозной порядковый номер задания в плэйлисте""" + order: ID! + + """""" + taskDeadline: TaskDeadline +} + +"""""" +input PersonalTrajectoryPointInput { + """Идентификатор Задания добавляемого в Траектории(tasks.task_id)""" + taskId: ID! + + """Идентификатор Элемента Цели внутри Траектории (skills.skill_id)""" + goalElementId: ID! + + """ + Идентификатор Уровня Цели внутри Траектории (goal_levels.goal_level_id) + """ + levelId: ID! +} + +"""""" +type PersonalTrajectoryQueries { + """информация по Модулю из контента""" + getModuleInfoById( + """Id модуля""" + goalId: ID! + + """Id ребенка (для роли Родителя)""" + childUserId: UUID + ): ModuleInfoResponse! + + """ + Информация и прогресс ученика по Уровням Модуля и Элементам Цели в них + если Траектория ученика не сформирована, Прогресс будет пустым + """ + getStudentGoalLevelInfoAndProgress( + """Id модуля""" + goalId: ID! + + """Id ребенка (для роли Родителя)""" + childUserId: UUID + ): GoalLevelProgressResponse! + + """ + Информация по Уровням Модуля и Элементам Цели в них без отображения Прогресса и без Первого уровня + """ + getGoalLevelInfo( + """Id модуля""" + goalId: ID! + ): GoalLevelResponse! + + """Информация об Элементе Цели из контента""" + getGoalElementInfo( + """Id модуля""" + goalId: ID! + + """Id элемента цели""" + goalElementId: ID + + """Id ребенка (для роли Родителя)""" + childUserId: UUID + ): GoalElementInfoResponse! + + """ + Задания, которые были добавлены в Элемент Цели в Траектории, + или Задания, которые могут быть добавлены туда + """ + getGoalElementTasksInTrajectory( + """Id модуля""" + goalId: ID! + + """Id элемента цели""" + goalElementId: ID + + """Id ребенка (для роли Родителя)""" + childUserId: UUID + ): GoalElementTasksResponse! + + """ + Задания из Системы Заданий, которые доступны для добавления для определенного Элемента Цели в Траектории + """ + getGoalElementTasksInPlaylist( + """Id модуля""" + goalId: ID! + + """Id элемента цели""" + goalElementId: ID + ): GoalElementTasksResponse! +} + +"""""" +type PersonalTrajectoryResponse { + """""" + responseCodes: [PersonalTrajectoryResponseCode!]! +} + +"""""" +enum PersonalTrajectoryResponseCode { + """Нет прав на чтение Модуля""" + GOAL_READ_ACCESS_DENIED + + """У пользователя нет Родительского доступа к переданному Ученику""" + PARENT_ACCESS_DENIED + + """В Элементе Цели нет заданий -- нужна ли такая ошибка?""" + NO_TASK_FOUND_IN_GOAL_ELEMENT + + """На уровне нет заданий --его нельзя выбирать целевым""" + NO_TASK_FOUND_IN_LEVEL + + """В Траектории нет заданий -- нужна ли такая ошибка?""" + NO_TASK_FOUND_IN_TRAJECTORY + + """ + Не найдена Траектории -- для страниц, которые могут быть доступны только после создания Траектории + """ + TRAJECTORY_NOT_FOUND + + """Попытка перегенерировать Траекторию, не изменив целевой уровень""" + SAME_TARGET_GOAL_LEVEL + + """Попытка сохранить 0 заданий в Элементе Цели""" + ATTEMPT_TO_SAVE_NO_TASKS + + """Попытка сохранить тот же набор заданий""" + NO_CHANGE_IN_TASKS + + """ + Попытка перегенерировать Траекторию при отсутствии изменений в СЗ или уровне + """ + NO_CHANGE_DETECTED + + """Несоответствие переданного Уровня и Элемента Цели""" + UNMATCHED_GOAL_LEVEL_AND_GOAL_ELEMENT + + """Несоответствие переданного Модуля и Элемента Цели""" + UNMATCHED_GOAL_AND_GOAL_ELEMENT + + """У Ученика нет Целевого уровня""" + TARGET_LEVEL_NOT_SET + + """ + Указанный Целевой уровень Ученика не найден -- невероятно маловероятный случай с рассинхроном данных в наших БД, не думаю, что нужна текстовка + """ + TARGET_LEVEL_NOT_FOUND + + """ + Попытка изменить Задания в незапланированном уровне (т.е. до формирования Траектории для этого уровня) + """ + CHANGING_TASKS_IN_UNPLANNED_LEVEL + + """Попытка изменить задания без обновления СЗ""" + CHANGING_TASKS_WITHOUT_PLAYLIST_UPDATE + + """Недостаточно Заданий для зачтения -- Траектория не будет сформирована""" + NOT_ENOUGH_TASKS_FOR_ACHIEVE + + """ + Фича флаг для нового варианта Траектории выключен для этого пользователя + """ + FUNCTIONALITY_NOT_AVAILABLE + + """""" + SUCCESS +} + +"""""" +input PersonalizeStudentModuleAndChangeTeacherTaskSetsRequest { + """Идентификатор Учебного Модуля (goals.goal_id)""" + moduleId: ID! + + """Идентификатор Студента (students.student_id)""" + studentId: UUID! + + """Массив идентификаторов, удаленных Плейлистов Учителя""" + deletedTeacherTaskSetIds: [ID!]! + + """Измененные Плейлисты Учителя""" + changedTeacherTaskSets: [TaskSetInput!]! + + """Созданные Плейлисты Учителя""" + createdTeacherTaskSet: [TaskSetInput!]! + + """ + Флаг означающий, что Учебный Модуль был персонализирован в контексте Студента + """ + modulePersonalized: Boolean! + + """Измененный Уровень закрытия Учебного Модуля""" + goalLevelForAchieve: Float + + """Измененная трудоемкость""" + laboriousness: Int + + """Измененная запланированная дата начала выполнения Учебного Модуля""" + startDate: String + + """Измененная запланированная дата закрытия Учебного Модуля""" + endDate: String + + """ + Является ли дедлайл жестким. После истечения жесткого дедлайна нельзять отправлять задания модуля на проверку + """ + isHardEndDate: Boolean! + + """ + Тип назначенного на Студента Плейлиста по Учебному Модулю + (нужно передавать только в случае если Плейлист Ученика был изменен) + """ + assignedPlaylistType: PlaylistType + + """ + Идентификатор назначенного на студента Плейлиста по Учебному Модулю + (нужно передавать только в случае если Плейлист Ученика был изменен на уже существующий) + """ + assignedPlaylistId: ID + + """ + Созданный Учительский Плейлист назначенный Ученику в рамках этого Учебного Модуля + """ + assignedPlaylist: TaskSetInput + + """ + в случае isNeedToCheckAffecting = true модуль будет персонализирован только если не изменился целевой уровень модуля к + выполнению которого приступил ученик, при isNeedToCheckAffecting = false модуль будет персонализирован в любом случае + """ + isNeedToCheckAffecting: Boolean! +} + +"""""" +type PersonalizeStudentModuleAndChangeTeacherTaskSetsResponse { + """Персонализированный Учебный Модуль""" + module: StudentModule + + """ + Все Плейлисты доступные Учителю по этому Учебному Модулю, как Учительские так и Базовые + """ + taskSets: [TaskSet!] + + """успешено ли выполнение запроса (пройдены ли все проверки)""" + isSuccess: Boolean! +} + +"""Соответствие % выполнения плана к отметке""" +type PlanCompletingToMarkRelation { + """Идентификатор соответствия % выполнения плана к отметке""" + planCompletingToMarkRelationId: ID! + + """ + Идентификатор конфигурации оценивания к которой относится данное соотношение + """ + schoolStageRatingConfigurationId: ID! + + """Идентификатор отметки""" + markId: ID! + + """Кол-во % завершенности плана для получения отметки""" + planCompetingPercentCount: Int! +} + +"""""" +input PlanCompletingToMarkRelationInput { + """Идентификатор отметки""" + markId: ID! + + """Кол-во % завершенности плана для получения отметки""" + planCompetingPercentCount: Int! +} + +"""Условия прохождения учебного модуля в плане""" +type PlanFrameCondition { + """""" + id: ID! + + """Тип условия""" + conditionType: ConditionType! + + """Мета-информация для определенного условия""" + conditionMeta: String +} + +"""Входящие условия прохождения учебного модуля в плане""" +input PlanFrameConditionInput { + """Тип условия""" + conditionType: ConditionType! + + """Мета-информация для определенного условия""" + conditionMeta: String +} + +"""Типы сущностей в плане""" +enum PlanItemType { + """Проект""" + PROJECT + + """Курс""" + COURSE + + """Проект в курсе""" + COURSE_PROJECT +} + +"""""" +enum PlanStatusEnum { + """Черновик, не сохранен""" + DRAFT + + """Опубликован, ученики его используют""" + PUBLISHED +} + +"""""" +enum PlanTypeEnum { + """на параллель""" + STAGE + + """на класс""" + CLASS + + """персональный""" + PERSONAL + + """вне плана""" + OUT_OF_PLAN +} + +"""Типы планов""" +enum PlanTypeForCondition { + """Глобальный план""" + GLOBAL + + """План на параллель""" + STAGE + + """План на класс""" + CLASS + + """Локальный курс вне плана""" + LOCAL_COURSE +} + +"""""" +type PlanningMutations { + """Создание тематического плана""" + createThematicPlan(thematicPlanCreationInput: ThematicPlanCreationInput!): ThematicPlan! + + """Редактирование тематического плана""" + updateThematicPlan(thematicPlanInput: ThematicPlanInput!): ThematicPlan! + + """Копирование тематического плана""" + copyThematicPlan(thematicPlanID: ID!): ThematicPlan! + + """Удаление тематического плана""" + deleteThematicPlan(thematicPlanID: ID!): Boolean! + + """ + Технический метод, Нужен для того, чтобы создался вложенный класс thematicPlanTopicLessonInput + """ + updateThematicPlanTopicLesson(thematicPlanTopicLessonInput: ThematicPlanTopicLessonInput!): Boolean! + + """ + Технический метод, Нужен для того, чтобы создался вложенный класс thematicPlanTopicLessonInput + """ + updateCalendarThematicPlanTopicLesson(calendarThematicPlanTopicLessonInput: CalendarThematicPlanTopicLessonInput!): Boolean! + + """Создание календарно-тематического плана""" + createCalendarThematicPlan(thematicPlanId: ID!, stageSubjectGroupId: ID!): CalendarThematicPlan! + + """Редактирование календарно-тематического плана""" + updateCalendarThematicPlan(calendarThematicPlanInput: CalendarThematicPlanInput!): CalendarThematicPlan! + + """Удаление календарно-тематического плана""" + deleteCalendarThematicPlan(calendarThematicPlanId: ID!): Boolean! + + """Синхронизация календарно-тематического плана и расписания""" + syncCalendarThematicPlan(calendarThematicPlanId: ID!, stageSubjectGroupId: ID!): CalendarThematicPlan! +} + +"""""" +type PlanningQueries { + """Запрос тематического плана по ID""" + getThematicPlan(thematicPlanId: ID!): ThematicPlan! + + """Запрос тематических планов с фильтрацией""" + getThematicPlansByFilter(filter: ThematicPlanFilter): [ThematicPlan!]! + + """Запрос календарно-тематического плана по ID""" + getCalendarThematicPlan(calendarThematicPlanId: ID!): CalendarThematicPlan! + + """Запрос календарно-тематического плана по ID ГКпП""" + getCalendarThematicPlansByStageSubjectGroupIds(stageSubjectGroupIds: [ID]!): [CalendarThematicPlan!]! + + """Запрос календарно-тематических планов с фильтрацией""" + getCalendarThematicPlansByFilter(filter: CalendarThematicPlanFilter!): [CalendarThematicPlan!]! + + """Запрос уровней доступа""" + getAccessLevels: [ThematicPlanAccessLevel]! + + """список предметов для ТП""" + getSubjects: [Subject!]! + + """список предметов для КТП""" + getSubjectsForCalendarThematicPlanning(academicYearId: ID!): [Subject!]! + + """Выдает список параллелей в школе. Для ТП.""" + getStages: [Stage!]! + + """Выдает список параллелей в выбранном учебном году. Для КТП""" + getStagesForCalendarThematicPlanning(academicYearId: ID!): [Stage!]! + + """выдает список академических лет школы.""" + getAcademicYears(schoolId: ID): [AcademicYear!]! + + """возвращает информацию по ГКпП по идентификатору""" + getStageSubjectGroup(stageSubjectGroupId: ID!): StageSubjectGroup! + + """поиск ГКпП по фильтру и группировка по параллели""" + getStageSubjectGroupsGroupedByStageByFilter(filter: StageSubjectGroupFilter!): [PlanningStageInfo!]! + + """ + Возвращает инфомацию о наличии КТП и урока по идентификатору ГКпП и времени начала урока + """ + getCalendarThematicPlanLessonStatus( + """Идентификатор ГКпП""" + stageSubjectGroupId: ID! + + """Дата и время проведения урока""" + lessonStartDateTime: DateTime! + ): CalendarThematicPlanLessonStatus! +} + +"""Класс""" +type PlanningStageGroupInfo { + """идентификатор класса""" + stageGroup: StageGroup! + + """группы класса по предмету""" + stageSubjectGroups: [PlanningStageSubjectGroupInfo!]! +} + +"""Параллель""" +type PlanningStageInfo { + """параллель""" + stage: Stage! + + """Классы""" + stageGroups: [PlanningStageGroupInfo!]! +} + +"""ГКпП""" +type PlanningStageSubjectGroupInfo { + """ГКпП""" + stageSubjectGroup: StageSubjectGroup! + + """Предмет ГКПП""" + subject: Subject! +} + +"""""" +type PlanningUserInfo { + """Идентификатор автора/редактора плана""" + userId: ID! + + """Имя автора/редактора плана""" + firstName: String! + + """Фамилия автора/редактора плана""" + lastName: String! + + """Отчество автора/редактора плана""" + middleName: String +} + +"""""" +type PlatfSolutionInfo { + """Идентификатор ответа студента""" + files: [StudyProcessFile]! + + """Текст комментария""" + comment: String +} + +"""Персонализированный Плейлист Студента""" +type Playlist { + """Идентификатор (base_playlists.base_playlist_id)""" + id: ID! @deprecated + + """""" + playlistId: ID! + + """""" + name: String! + + """Уровень Учебного Модуля внутри Персонального Плейлиста""" + levels: [PlaylistLevel!]! + + """""" + playlistType: PlaylistType! + + """""" + isDefault: Boolean! + + """ + Сумма минимально-необходимых к выполнению заданий во всех слотах плейлиста + """ + minimumNumberOfTasksSum: Int! +} + +"""Элемент Цели внутри Персонального Плейлиста""" +type PlaylistGoalElement { + """Идентификатор (skills.skill_id)""" + id: ID! + + """""" + goalElementName: String! @deprecated + + """Название Элемента Цели для Студента""" + studentDescription: String! + + """Слоты внутри Персонального Плейлиста""" + slots: [PlaylistSlot!]! + + """Циферное обозначение Элемента цели (1, 2, 3...)""" + number: String! + + """Буквенное обозначение Элемента цели (А, Б, ...)""" + letter: String! +} + +"""Уровень Учебного Модуля внутри Персонального Плейлиста""" +type PlaylistLevel { + """Идентификатор (goal_levels.goal_level_id)""" + id: ID! + + """Числовое значение Уровня Учебного Модуля (1.0,2.0)""" + level: Float! + + """Элемент Цели внутри Персонального Плейлиста""" + goalElements: [PlaylistGoalElement!]! +} + +"""Слоты внутри Персонального Плейлиста""" +type PlaylistSlot { + """Идентификатор (base_playlist_slots.base_playlist_slot_id)""" + id: ID! + + """""" + slotId: ID! + + """ + Флаг -является ли этот слот слотом для проверочных Заданий, вместо него следует использовать slotType + """ + isCheck: Boolean! @deprecated + + """Тип слота""" + slotType: PlaylistSlotTypeEnum + + """Минимальное количество Заданий, которое необходимо выполнить""" + minimumNumberOfTasks: Int! + + """Задания внутри Слота""" + slotTasks: [PlaylistSlotTask!]! + + """""" + tasks: [StudentTask!]! @deprecated +} + +"""Задание внутри Слота""" +type PlaylistSlotTask { + """Идентификатор (base_playlist_slot_task.base_playlist_slot_task_id)""" + id: ID! + + """Флаг - обязательно ли данное Задание в рамках этого Слота""" + mandatory: Boolean! + + """Задание""" + task: StudentTask! + + """Сквозной порядковый номер задания в плэйлисте""" + order: ID! +} + +"""""" +enum PlaylistSlotTypeEnum { + """Для проверочных заданий""" + CHECK + + """Для Мотивационных заданий""" + MOTIVATION + + """Для теорий/информационных заданий""" + THEORY + + """для учебных заданий""" + TRAINING + + """Слот с невалидным состоянием""" + INCORRECT +} + +"""Области видимости (скоупы)""" +enum PlaylistType { + """Базовый плейлист""" + BASE + + """Плейлист Учителя""" + TEACHER +} + +"""Ключевые слова для формирования промпт-строк""" +type PortfolioAvatarPromptDetailModel { + """Идентификатор""" + portfolioAvatarPromptDetailId: ID + + """Тип""" + portfolioAvatarPromptDetailType: String! + + """Наименование""" + portfolioAvatarPromptDetailName: String! + + """Описание""" + portfolioAvatarPromptDetailDescription: String! +} + +"""Бейдж за достижение""" +type PortfolioBadge { + """Идентификатор бейджа""" + portfolioBadgeId: ID! + + """Наименование бейджа""" + name: String! + + """Описание бейджа""" + description: String! + + """URL изображения бейджа""" + portfolioBadgeUrl: String! + + """ + Вспомогательное поле (для frontend стороны), отвечающее за наименование окна при отображении бейджа за достижение + """ + feModalWindowName: String +} + +"""Документ портфолио""" +type PortfolioDocument { + """Идентификатор документа""" + portfolioDocumentId: ID + + """Идентификатор Школы""" + schoolId: ID + + """Идентификатор пользователя (учителя)""" + userId: ID + + """Категория документа""" + documentCategory: PortfolioDocumentCategory + + """Тип документа""" + documentType: PortfolioDocumentsType + + """Дата события или выдачи документа""" + documentDate: Date + + """Наименование документа""" + documentName: String + + """Дополнительные поля""" + fields: [PortfolioDocumentFields] + + """Ссылки на файл в портфолио""" + files: [PortfolioDocumentFile] +} + +"""""" +type PortfolioDocumentCategory { + """Идентификатор категории документа""" + documentCategoryId: UUID + + """Код категории документа""" + categoryCode: String + + """Наименование категории документа""" + categoryName: String + + """Родитель категории""" + categoryParent: String +} + +"""""" +type PortfolioDocumentComment { + """Идентификатор комментария к документу""" + portfolioDocumentCommentId: UUID + + """Идентификатор родительского комментария""" + parentId: UUID + + """Текст комментария к достижению""" + text: String + + """Дата создания комментария к достижению""" + created: DateTime + + """Идентификатор отправителя комментария""" + senderId: UUID + + """ФИО отправителя""" + senderName: String + + """URL аватара отправителя""" + senderAvatarUrl: String +} + +"""Дополнительные поля""" +type PortfolioDocumentFields { + """Наименование поля""" + fieldName: String + + """Значение поля""" + fieldValue: String +} + +"""Дополнительные поля""" +input PortfolioDocumentFieldsInput { + """Наименование поля""" + fieldName: String! + + """Значение поля""" + fieldValue: String! +} + +"""Ссылки на файл в портфолио""" +type PortfolioDocumentFile { + """Идентификатор файла""" + portfolioFileId: UUID + + """Идентификатор документа, к которому присоединен файл""" + portfolioDocumentId: UUID + + """ + Имя файла, которое задает пользователь при присоединении файла к документу в портфолио + """ + portfolioFileName: String + + """Ссылка на файл в хранилище""" + relativePath: String + + """ + Признак, что файл нужно использовать, как обложку для документа (TRUE - файл обложки, FALSE - все остальные файлы) + """ + documentFileCover: Boolean + + """Размер файла""" + fileSize: Int! +} + +"""Ссылки на файл в портфолио""" +input PortfolioDocumentFileInput { + """Идентификатор файла""" + portfolioFileId: UUID + + """Идентификатор документа, к которому присоединен файл""" + portfolioDocumentId: UUID + + """ + Имя файла, которое задает пользователь при присоединении файла к документу в портфолио + """ + portfolioFileName: String! + + """Ссылка на файл в хранилище""" + relativePath: String! + + """ + Признак, что файл нужно использовать, как обложку для документа (TRUE - файл обложки, FALSE - все остальные файлы) + """ + documentFileCover: Boolean! + + """Размер файла""" + fileSize: Int! + + """Признак того, что нужно удалить файл из хранилища""" + isDelete: Boolean +} + +"""""" +type PortfolioDocumentReaction { + """Идентификатор реакции к документу""" + portfolioDocumentReactionId: UUID + + """Имя реакции к достижению""" + name: String + + """URL реакции к достижению""" + url: String + + """Дата создания реакции к достижению""" + created: DateTime + + """Идентификатор отправителя реакции""" + senderId: UUID + + """ФИО отправителя""" + senderName: String + + """URL аватара отправителя""" + senderAvatarUrl: String +} + +"""""" +type PortfolioDocumentReactionsComments { + """Идентификатор документа""" + portfolioDocumentId: UUID + + """Список объектов-комментариев к документу портфолио""" + portfolioDocumentComments: [PortfolioDocumentComment] + + """Список объектов-реакций к документу портфолио""" + portfolioDocumentReactions: [PortfolioDocumentReaction] +} + +"""""" +type PortfolioDocumentsType { + """Идентификатор типа документа""" + documentTypeId: UUID + + """Код типа документа""" + typeCode: String + + """Наименование типа документа""" + typeName: String +} + +"""Справочник портфолио""" +type PortfolioFieldValueList { + """Идентификатор""" + portfolioFieldValueListId: ID + + """Категория документа""" + documentCategory: PortfolioDocumentCategory + + """Тип значения справочника""" + type: String! + + """Значение справочника""" + value: String! + + """Значения дополнительных полей""" + additionalFields: [PortfolioListAdditionalField] +} + +"""Дополнительные поля""" +type PortfolioListAdditionalField { + """Значение справочника""" + name: String! + + """Значение атрибута""" + value: String +} + +"""""" +type PortfolioReaction { + """""" + portfolioReactionId: String! + + """""" + name: String! + + """""" + url: String! +} + +"""""" +type Position { + """Идентификатор должности""" + id: UUID! + + """Наименование должности""" + name: String! +} + +"""""" +type Price { + """ + Стоимость в минимальной единице валюты. + Зависит от Currency.fractionDigits. Так, если число знаков после запятой 2, а стоимость 1337, + валюта - рубль, то стоимость составляет 13 рублей 37 копеек. + """ + amount: Int! + + """Валюта, в которой представлена цена.""" + currency: Currency! +} + +"""Информация о сессиях печати задания""" +type PrintTaskMeta { + """ + Количество копий, сделанных текущим пользователем, за последний год, + начиная с первого сентября (в контексте UTC). + """ + printCountsForYear: Int! +} + +"""""" +input PrivateFeedbackInput { + """""" + userId: UUID! + + """""" + comment: String! +} + +"""Информация о обработанной заявке на расформирование команды""" +type ProcessedTeamDisbandRequestInfo { + """Идентификатор заявки на расформирование команды""" + teamDisbandRequestId: ID + + """Дата обработки заявки""" + dateOfRequestProcessing: DateTime + + """Количество часов, которое заявка находилась на рассмотрении""" + hoursToConsider: Int + + """Название параллели, с которой пришла заявка""" + parallelName: String + + """Название проекта""" + projectName: String + + """Информация о размере команды""" + teamSizeInfo: TeamSizeInfo + + """Информация о проводимом голосовании для расформирования команды""" + disbandmentTeamVotingInfo: DisbandmentTeamVotingInfo + + """Логин пользователя, обработавшего запрос""" + login: String + + """Идентификатор статуса заявки""" + disbandRequestStatus: DisbandRequestStatus +} + +"""Параметры прокторинга""" +type ProctoringParameters { + """URL для прокторинга""" + examusURL: String! + + """часть URL для интеграции с экзамусом""" + integrationName: String! + + """ID сессии пользователя""" + sessionId: UUID! + + """токен""" + token: String! + + """Статус сеанса прокторинга в Экзамусе""" + sessionStatus: SessionStatusFromExamus! +} + +"""""" +type ProfileCover { + """""" + profileCoverFileId: ID! + + """""" + profileCoverFileUrl: String! +} + +"""""" +type ProfileCoverUser { + """""" + userCoverId: ID! + + """""" + coverFileUrl: String! + + """""" + userId: UUID! +} + +""" +Тип профиля польщователя, приглашенного на платформу +Расширяет ролевую модель для специфичного набора фролей +""" +enum ProfileType { + """Стандартный БА""" + BUSINESS_ADM +} + +"""Уровень видимости профиля участника акселератора.""" +enum ProfileVisibilityLevel { + """""" + OPENED + + """""" + PARTIALLY_CLOSED + + """""" + CLOSED +} + +"""Результаты поиска учеников в глобальном поиске Ш21""" +type ProfilesSearchResult { + """Общее количество найденных профилей""" + count: Int + + """Профили учеников с учетом пагинации""" + profiles: [S21StudentPublicProfileBasicInfo]! +} + +"""""" +type ProforientationConfigurationQueryV2 { + """Root URL перехода в Метаверс""" + metaverseUrl: String! + + """Информация о текущем периоде в Профориентации""" + currentPeriodInfo: PeriodInfo! + + """Информация о следующем периоде в Профориентации""" + nextPeriodInfo: PeriodInfo! + + """запрос для получения ключевых дат и периодов в профориентации.""" + proforientationPeriodsInfo(bigChallengePeriods: [BigChallengePeriod]): [PeriodInfo] +} + +"""""" +type ProforntUIElement { + """id пользователя""" + userId: UUID! + + """тип элемента UI""" + name: ProforntUiElementName! + + """Состояние элемента UI у пользователя.""" + state: ProforntUiElementState! + + """Дата и время изменения состояния.""" + stateTimestamp: Int! +} + +"""""" +type ProforntUiElementMutations { + """""" + changeProforntUIElementState(userId: UUID!, name: ProforntUiElementName!, state: ProforntUiElementState!): Boolean +} + +"""""" +enum ProforntUiElementName { + """""" + WINTER_CHANGE_NOTIFICATION + + """""" + BIG_CHALLENGE_PASSED_NOTIFICATION + + """""" + TRIAL_PERIOD_START_MODAL +} + +"""""" +type ProforntUiElementQuery { + """""" + proforntUiElement(userId: UUID!, name: ProforntUiElementName!): ProforntUIElement +} + +"""""" +enum ProforntUiElementState { + """""" + SHOWN +} + +"""Результат верификации настроек программы""" +type ProgramValidation { + """список ошибок при валидации""" + errors: [String!]! + + """список предупреждений при валидации""" + warnings: [String!]! + + """общее количество провалидированных школ""" + schoolCount: Int! + + """количество добавляемых в программу школ""" + addedSchoolCount: Int! + + """количество отключаемых от программы школ""" + removedSchoolCount: Int! + + """количество школ программы, для которых изменятся проверяющие""" + changedSchoolCount: Int! + + """количество направлений в программе""" + directionCount: Int! + + """список направлений (предметов) программы""" + directions: [String!]! +} + +""" +Группа проверяющих (региональных или школьных) программы Внешнего обучения, +Конкурса или Внешнего конкурса по направлению (предмету) +""" +type ProgramVerifierGroups { + """идентификатор группы проверяющих""" + verifierGroupId: ID! + + """ + идентификатор учебного предмета, на проверке которого специализируется группа + """ + subjectId: ID! + + """короткое наименование учебного предмета""" + subjectName: String! + + """список проверющих, входящих в группу""" + users: [VerifierGroupUser!]! + + """тп группы проверяющих: региональная или школьная""" + isRegional: Boolean! +} + +"""""" +type ProgressBarDataV2 { + """Прогресс по категориям школьных предметов""" + subjectCategoryProgress: [SubjectCategoryProgressV2!]! + + """Прогресс по учусь учиться""" + llTaskProgress: ProgressInfo! + + """Прогресс по добавленным достижениям в профиль""" + achievementProgress: ProgressInfo! + + """Прогресс по квестам в метавселенной""" + questProgress: ProgressInfo! + + """Прогресс по всем активностям""" + overallProgress: OverallProgress! + + """суммарное количество баллов по предметным модулям""" + overallSubjectCategoryProgress: Int +} + +"""Информацию о прогрессе прохождения проверок""" +type ProgressCheckInfo { + """Общее кол-во требуемых проверок""" + reviewUserCount: Int! + + """Пройденное кол-во проверок""" + reviewUserCountExecuted: Int! +} + +"""""" +type ProgressInfo { + """Текущий прогресс по активности""" + progress: Int! + + """Прогресс по активности за текущую неделю""" + progressCurrentWeek: Int! + + """Текущий прогресс по активности без учета результатов текущей недели""" + progressWithoutCurrentWeek: Int! +} + +"""""" +type Project implements IProject { + """""" + id: UUID! + + """""" + name: String! + + """""" + shortName: String! + + """""" + description: String! + + """""" + teamId: UUID! + + """""" + technology: Technology! + + """""" + branch: Branch! + + """""" + customer: Customer! + + """""" + country: Country! + + """""" + region: Region + + """""" + parentId: UUID + + """""" + state: ProjectState! + + """""" + modifiedAt: DateTime! + + """""" + technologyOtherDesc: String + + """""" + branchOtherDesc: String + + """""" + customerOtherDesc: String + + """""" + logotypeUrl: String + + """""" + files: [ProjectFile] +} + +"""""" +input ProjectAssessmentInput { + """""" + projectId: UUID! + + """""" + milestone: AcceleratorMilestone + + """""" + score: Int + + """""" + grade: AcceleratorProjectGrade +} + +"""Информация о проверках за попытку выполнения проекта""" +type ProjectAttemptEvaluationsInfo { + """Ид ответа студента""" + studentAnswerId: ID! + + """Информация о результатах попытки""" + attemptResult: StudentGoalAttempt + + """Состав команды с возможностью перехода в профиль студента""" + team: TeamWithMembers + + """Информация о p2p проверках""" + p2p: [P2PEvaluationInfo!]! + + """Информация об auto проверках""" + auto: AutoEvaluationInfo! + + """ + Информация о завершенных проверках код-ревью студенческого проекта с финальной оценкой + {null} - если нет проверок код-ревью + """ + codeReview: StudentCodeReviewResult! +} + +"""Информация о проверках за попытку выполнения проекта""" +type ProjectAttemptEvaluationsInfo_V1 { + """Ид ответа студента""" + studentAnswerId: ID + + """Ид попытки""" + studentGoalAttemptId: ID + + """Информация о результатах попытки""" + attemptResult: StudentGoalAttempt + + """Состав команды с возможностью перехода в профиль студента""" + team: TeamWithMembers + + """Информация о p2p проверках""" + p2p: [P2PEvaluationInfo!]! + + """Информация об auto проверках""" + auto: AutoEvaluationInfo! + + """ + Информация о завершенных проверках код-ревью студенческого проекта с финальной оценкой + {null} - если нет проверок код-ревью + """ + codeReview: StudentCodeReviewResult! + + """Информация о статусе попытки. Nullable из за обратной совместимости""" + attemptStatus: StudentGoalAttemptStatus +} + +"""Найденная карточка проекта""" +type ProjectCard implements IProject { + """""" + id: UUID! + + """""" + name: String! + + """""" + shortName: String! + + """""" + description: String! + + """""" + teamId: UUID! + + """""" + technology: Technology! + + """""" + branch: Branch! + + """""" + customer: Customer! + + """""" + country: Country! + + """""" + region: Region + + """""" + parentId: UUID + + """""" + state: ProjectState! + + """""" + modifiedAt: DateTime! + + """""" + participantsCount: Int! + + """""" + technologyOtherDesc: String + + """""" + branchOtherDesc: String + + """""" + customerOtherDesc: String + + """""" + logotypeUrl: String + + """""" + files: [ProjectFile] +} + +"""Статус проверки проекта""" +enum ProjectEvaluationStatus { + """Проверка проведена, успешное выполнение""" + SUCCESS + + """Проверка проведена, неудачное выполнение""" + FAILED + + """Проверка запланирована""" + SCHEDULED + + """Проверка не запланирована""" + NOT_SCHEDULED +} + +"""Информация о проверках по проекту""" +type ProjectEvaluationsInfo { + """Информация о p2p проверках""" + p2p: [P2PEvaluationInfo!]! + + """Информация об auto проверках""" + auto: AutoEvaluationInfo! +} + +"""""" +type ProjectFile { + """""" + fileId: String! + + """""" + projectId: String! + + """""" + fileName: String! + + """""" + fileURL: String! + + """""" + description: String + + """""" + createDataTime: DateTime! + + """""" + createUser: AcceleratorProfile! +} + +"""""" +input ProjectFileInput { + """""" + projectId: UUID! + + """""" + fileName: String + + """""" + fileURL: String + + """""" + description: String +} + +"""""" +input ProjectFilterInput { + """""" + orgUnitId: UUID! + + """""" + regionIds: [UUID!] + + """""" + countryIds: [UUID!] + + """""" + branchIds: [UUID!] + + """""" + technologyIds: [UUID!] + + """""" + nameFragment: String + + """""" + projectRoleIds: [UUID!] + + """""" + state: ProjectState +} + +"""""" +type ProjectFlow { + """Id проектного потока""" + projectFlowId: UUID! + + """Имя проектного потока""" + projectFlowName: String! + + """Дата начала проектного потока""" + projectFlowStartDate: DateTime! + + """Дата завершения проектного потока""" + projectFlowEndDate: DateTime + + """Количество студентов проектного потока""" + studentsCount: Int + + """Количество классов проектного потока""" + stageGroupsCount: Int + + """Статус проектного потока""" + projectFlowStatus: ProjectFlowStatus! +} + +"""""" +input ProjectFlowSaveOrUpdate { + """""" + projectFlowId: UUID + + """""" + projectFlowName: String! + + """""" + projectFlowStartDate: DateTime! + + """""" + projectFlowEndDate: DateTime + + """""" + stageGroups: [Float!] +} + +"""""" +type ProjectFlowStageGroup { + """Id класса""" + stageGroupId: UUID! + + """Имя класса""" + stageGroupName: String! + + """Активность класса в проектном потоке""" + projectFlowActive: Boolean! +} + +"""""" +enum ProjectFlowStatus { + """""" + WAIT + + """""" + ACTIVE + + """""" + FINISH +} + +"""""" +type ProjectFlowWithStageGroups { + """Id проектного потока""" + projectFlowId: UUID! + + """Имя проектного потока""" + projectFlowName: String! + + """Дата начала проектного потока""" + projectFlowStartDate: DateTime! + + """Дата конца проектного потока""" + projectFlowEndDate: DateTime + + """ + Список классов проектного потока + !!!! В релизной версии выглядит так: + stageGroups: [ProjectFlowStageGroup!] + """ + stageGroups: [ProjectFlowStageGroup]! +} + +"""""" +input ProjectInput { + """""" + parentId: UUID + + """""" + name: String! + + """""" + shortName: String! + + """""" + description: String! + + """""" + technologyId: UUID! + + """""" + branchId: UUID! + + """""" + customerId: UUID! + + """""" + regionId: UUID + + """""" + countryId: UUID! + + """""" + technologyOtherDesc: String + + """""" + branchOtherDesc: String + + """""" + customerOtherDesc: String + + """""" + logotypeUrl: String +} + +"""Информация о проверках проекта""" +type ProjectReviewsInfo { + """Количество проверок студентом для сдачи проекта""" + reviewByStudentCount: Int! + + """Количество запланированных проверок к студенту""" + relevantReviewByStudentsCount: Int! + + """Количество проверок БА для сдачи проекта""" + reviewByInspectionStaffCount: Int! + + """Количество запланированных проверок к БА""" + relevantReviewByInspectionStaffCount: Int! +} + +"""Модель вакансии проекта Акселератора""" +type ProjectRole { + """ID вакансии""" + vacancyId: UUID! + + """ID проекта""" + projectId: UUID! + + """ID участника вакансии""" + userId: UUID + + """ID роли из справочника""" + projectRoleId: UUID + + """Название роли""" + projectRoleName: String + + """Роль введенная вручную""" + projectRoleOther: String + + """Требования к вакансии""" + canDo: String + + """ + Признак "вакансия уже занята" + """ + isOpen: Boolean! +} + +"""Модель вакансии проекта Акселератора для капитана""" +type ProjectRoleForCapitan { + """ID вакансии""" + vacancyId: UUID! + + """ID проекта""" + projectId: UUID! + + """ID роли из справочника""" + projectRoleId: UUID + + """Название роли""" + projectRoleName: String + + """Роль введенная вручную""" + projectRoleOther: String + + """ + Признак "вакансия уже занята" + """ + vacancyIsOpen: Boolean! + + """Имя Участника, занявшего вакансию""" + userFirstName: String + + """Фамилия Участника, занявшего вакансию""" + userSecondName: String + + """Требования к вакансии""" + canDo: String +} + +"""""" +type ProjectRoleFromDirectory { + """ID роли из справочника""" + projectRoleId: UUID! + + """Название роли""" + projectRoleName: String! +} + +"""Входная модель вакансии проекта Акселератора""" +input ProjectRoleInput { + """ID вакансии""" + vacancyId: UUID + + """ID проекта""" + projectId: UUID + + """ID роли из справочника""" + projectRoleId: UUID + + """Роль введенная вручную""" + projectRoleOther: String + + """Требования к вакансии""" + canDo: String +} + +"""Статус проекта""" +enum ProjectState { + """""" + OPENED + + """""" + CLOSED +} + +"""Статистика с информацией о студетах, связанных с проектом""" +type ProjectStatistics { + """Количество студентов, зарегистрированных на групповой проект""" + registeredStudents: Int! + + """ + Количество студентов, выполняющих проект и ещё не перешедщих в стадию проверки + """ + inProgressStudents: Int! + + """Количество студентов, находящихся в стадии проверки проекто""" + evaluationStudents: Int! + + """Количество студентов, завершивших выполнение проекта""" + finishedStudents: Int! + + """Количество студентов, успешно завершивших выполнение проекта""" + acceptedStudents: Int! + + """Количество студентов, неуспешно завершивших выполнение проекта""" + failedStudents: Int! + + """ + Процент студентов, которые начали больше одной попытки выполнения проекта + """ + retriedStudentsPercentage: Int! + + """Статистика по групповому проекту""" + groupProjectStatistics: GroupProjectStatistics +} + +""" +S21 Информация о команде в групповом задании +DEPRECATED - use ProjectTeamWithMembers +""" +type ProjectTeamMembers { + """""" + id: UUID! + + """Кол-во участников команды""" + amountMember: Int! + + """Название команды""" + teamName: String! + + """Статус команды""" + teamStatus: TeamStatusEnum! + + """Минимальный размер команды""" + minTeamMemberCount: Int! + + """Максимальный размер команды""" + maxTeamMemberCount: Int! + + """Тим-лид команды""" + teamLead: User! + + """Участники команды""" + members: [User!]! + + """Приглашенные в команду пользователи""" + invitedUsers: [User!]! +} + +"""Информация о команде в групповом задании""" +type ProjectTeamWithMembers { + """Команда вместе с участниками""" + teamWithMembers: TeamWithMembers! + + """Идентификатор модуля, который выполняет команда""" + goalId: ID + + """Приглашенные в команду студенты""" + invitedStudents: [StudentInvitationInfo!]! +} + +""" +Элемент таймлайна проекта, каждый элемент соответствует этапу прохождения проекта (Регистрация, Выполнение, Проверка) +""" +type ProjectTimelineItem { + """Тип элемента таймлайна""" + type: TimelineItemType! + + """Статус элемента таймлайна""" + status: TimelineItemStatus! + + """Время начала этапа, которому соответствует элемент таймлайна""" + start: DateTime + + """Время окончания этапа, которому соответствует элемент таймлайна""" + end: DateTime + + """Вложенные элементы""" + children: [ProjectTimelineItem] + + """порядковый номер""" + order: Int + + """в зависимости от проверки как отображать элемент""" + elementType: TimelineElementEnum +} + +"""""" +type ProjectViewedModel { + """""" + projectCard: ProjectCard! + + """""" + projectFlowId: UUID! +} + +"""Результаты поиска проектов в глобальном поиске Ш21""" +type ProjectsSearchResult { + """Общее количество найденных профилей""" + count: Int + + """Проекты с учетом пагинации""" + projects: [StudentProjectInfo]! +} + +"""""" +enum PublicationStatus { + """Ожидает публикации""" + WAITING + + """Проверка""" + VALIDATE + + """Ошибки проверки""" + ERROR_VALIDATE + + """Проверено""" + VALIDATED + + """Опубликована""" + PUBLISHED +} + +"""Ответ на публикацию контента из gitlab в ШЦП""" +type PublishContentResponse { + """контент-файл""" + contentFile: GitlabFile + + """файл чек-листа""" + checklistFile: GitlabFile + + """результат публикации контента""" + result: PublishContentResult! + + """отчет по выявленным ошибкам во время обработки данных""" + report: [String!]! +} + +"""Результат публикации контента""" +enum PublishContentResult { + """успешная публикация""" + SUCCESS + + """сервис gitlab временно не доступен""" + NOT_AVAILABLE + + """есть ошибки во время обработки данных""" + PARSE_ERROR + + """публикация в целом успешная, но требуется реакция пользователя""" + SUCCESS_WITH_MESSAGE +} + +""" +Идентификаторы профессий/ролей/подразделений, полученных из АС Пульс с привязкой к шаблонам траекторий Bootcamp +""" +type PulseJobCode { + """Уникальный идентификатор""" + pulseJobCodeId: ID + + """Внешний идентификатор профессии в АС Пульс""" + extJobCodeId: String! + + """Название профессии в АС Пульс""" + extJobCodeName: String! + + """Тип связи для определения внешнего идентификатора профессии сотрудника""" + pulseJobCodeType: PulseJobCodeType! + + """Дата и время создания""" + createTs: DateTime + + """Дата и время последнего изменения""" + lastModifyTs: DateTime + + """Идентификатор пользователя последним изменившим шаблон""" + lastModifierUserId: UUID +} + +"""Данные для сохранения идентификатора профессий/ролей/подразделений""" +input PulseJobCodeInputModel { + """Внешний идентификатор профессии в АС Пульс""" + extJobCodeId: String! + + """Название профессии в АС Пульс""" + extJobCodeName: String! + + """Тип связи для определения внешнего идентификатора профессии сотрудника""" + pulseJobCodeType: PulseJobCodeType! +} + +""" +Маппинг между шаблоном траектории и внешними идентификаторами профессий/ролей/подразделений АС Пульс +""" +type PulseJobCodeMapper { + """Идентификатор шаблона траектории""" + trajectoryTemplate: TrajectoryTemplate! + + """Список профессий""" + professions: [PulseJobCode]! + + """Список ролей""" + sbergiles: [PulseJobCode]! + + """Список подразделений""" + units: [PulseJobCode]! +} + +""" +Данные для сохранения связи между шаблонами траекторий и внешними идентификаторами +профессий/ролей/подразделений АС Пульс для формирования траекторий новым сотрудникам Bootcamp +""" +input PulseJobCodeMapperInputModel { + """Идентификатор шаблона траектории""" + trajectoryTemplateId: ID! + + """Список профессий""" + professions: [PulseJobCodeInputModel]! + + """Список ролей""" + sbergiles: [PulseJobCodeInputModel]! + + """Список подразделений""" + units: [PulseJobCodeInputModel]! +} + +"""Тип справочника профессий АС Пульс для сотрудников Bootcamp""" +enum PulseJobCodeType { + """Справочник типовых должностей""" + PROFESSION + + """Справочник ролей Sbergile""" + SBERGILE_ROLE + + """Справочник подразделение""" + UNIT +} + +"""Информация пользователя из АС Пульс""" +type PulsePersonSmallModel { + """Внешний идентификатор пользователя в системе АС Пульс""" + pulsePersonId: UUID! + + """Название должности пользователя в АС Пульс""" + pulseProfessionLevelName: String + + """Список sbegile ролей пользователя в АС Пульс""" + pulseAgilePositionName: String + + """Список функциональных подразделений пользователя АС Пульс""" + pulseUnitFullName: String + + """Город пользователя из АС Пульс""" + pulseCity: String +} + +"""""" +type PurchaseProperties { + """""" + purchaseButtonEnabled: Boolean! +} + +"""Результат выполнения питон-кода""" +type PythonTranslationResult { + """Корректно ли был отработан запрос внешним сервисом""" + success: Boolean! + + """Если запрос не был обработан корректно, сообщение об ошибке""" + error: String + + """ + Дальнейшие поля заполняются только если success - true + Завершилось ли исполнение кода на данный момент. Возможные значения - pending | completed + """ + status: String + + """ + Дальнейшие поля заполняются только если status - completed + Результат выполнения кода - failure | success + """ + result: String + + """Поток вывода""" + stdout: String + + """Поток ошибок. Если скрипт "отрубился" по таймауту, то 'timeout'""" + stderr: String +} + +"""""" +type Query { + """""" + student: StudentQueries + + """""" + studentThemes: StudentThemesQueries + + """""" + mediateka: MediatekaQueries! + + """""" + parent: ParentQueries + + """""" + parentThemes: ParentThemesQueries + + """""" + gamification: GamificationQueries + + """""" + draft: DraftQueries + + """""" + content: ContentQueries + + """""" + globalPlan: GlobalPlanQueries + + """""" + notificationConfiguration: NotificationConfigurationQueries + + """""" + statisticReport: StatisticReportQueries + + """""" + personalTrajectory: PersonalTrajectoryQueries + + """""" + trajectory: TrajectoryQueries + + """""" + calendarEventS21: CalendarEventS21Queries + + """""" + bigChallenge: BigChallengeQuery + + """""" + bigChallengeSubjects: SubjectQuery + + """""" + bigChallengeInfoWithStudentProgressV3: BigChallengeWithStudentProgressQueryV3 + + """""" + proforientationConfigurationV2: ProforientationConfigurationQueryV2 + + """""" + proforntUiElement: ProforntUiElementQuery + + """""" + schoolSelfConfiguration: SchoolSelfConfigurationQueries + + """""" + sc21BaCalendar: SC21BaCalendarQueries + + """""" + finalMarks: FinalMarksQueries + + """""" + externalLearning: ExternalLearningQueries + + """""" + visitLessonStat: VisitLessonStatQueries + + """""" + honorRating: HonorRatingQueries + + """""" + course: CourseQueries + + """""" + sc21StudentTaskCheck: SC21StudentTaskCheckQueries + + """""" + businessAdmin: BusinessAdminQueries + + """""" + regionalDashboard: RegionalDashboardQueries + + """""" + event: EventQueries + + """""" + asyncReport: AsyncReportQueries + + """""" + contentTags: ContentTagsQueries + + """""" + systemAdmin: SystemAdminQueries + + """""" + kandinsky: KandinskyQueries + + """""" + routeInfo: RouteInfoQueries + + """""" + award: AwardQueries + + """""" + export: ExportQueries + + """""" + modularPlanning: ModularPlanningQueries + + """""" + tariffs: TariffsQueries + + """""" + statisticsMarks: StatisticsMarksQueries + + """""" + selection: SelectionQueries! + + """""" + team: TeamQueries + + """""" + eDiary: EDiaryQueries + + """""" + penalty: PenaltyQueries + + """""" + externalContent: ExternalContentQueries + + """""" + user: UserQueries + + """""" + s21Notification: S21NotificationQueries + + """""" + leaderBoard: LeaderBoardQueries + + """""" + userProfile: UserProfileQueries + + """""" + holyGraph: HolyGraphQueries + + """""" + visitJournal: VisitJournalQueries + + """""" + sc21BaTaskCheck: SC21BaTaskCheckQueries + + """""" + stageGroupMassCreation: StageGroupMassCreationQueries + + """""" + teacher: TeacherQueries + + """""" + apiMigration: ApiMigrationQueries + + """""" + eJournal: EJournalQueries + + """""" + planning: PlanningQueries + + """""" + calendarEvent: CalendarEventQueries + + """""" + accelerator: AcceleratorQueries + + """""" + school21: School21Queries + + """""" + eventGenerator: EventGeneratorQueries + + """""" + attendanceAndAchievement: AttendanceAndAchievementQueries + + """""" + taskCheck: TaskCheckQueries + + """""" + electronicJournal: ElectronicJournalQueries + + """""" + attestationPeriods: AttestationPeriodQueries + + """""" + globalSearch: GlobalSearchQueries + + """""" + attestationPeriodMark: AttestationPeriodMarkQueries +} + +"""Быстрые действия""" +enum QuickAction { + """""" + EMPTY_WORK + + """""" + INVALID_COMPILATION + + """""" + NORME + + """""" + LEAKS + + """""" + CRASH + + """""" + CHEAT + + """""" + FORBIDDEN_FUNCTION + + """""" + ABSENCE + + """""" + CODE_STYLE + + """""" + CHEATING +} + +"""Цитата недели""" +type Quote { + """""" + quoteId: ID! + + """""" + text: String! + + """""" + author: String! + + """""" + image: QuoteImage +} + +"""Картинка для цитаты недели""" +type QuoteImage { + """""" + url: String! +} + +"""""" +enum ROLES { + """Системный администратор""" + SUPER_ADM + + """Конфигуратор системы""" + BUSINESS_ADM + + """Учитель""" + TEACHER + + """Ученик""" + STUDENT + + """Родитель""" + PARENT + + """Методолог""" + METHODOLOGIST + + """Тьютор""" + TUTOR + + """Завуч""" + HEAD_TEACHER + + """Директор""" + DIRECTOR + + """Без роли""" + NO_ROLE + + """Учитель Сберкод""" + TEACHER_SBERCODE +} + +"""Конфигурация оценивания""" +type RatingConfiguration { + """Идентификатор конфигурации оценивания(АвтоГенерируемый)""" + ratingConfigurationId: ID! + + """Доступна ли ручная корректировка отметок за учебный период""" + manualChangeAvailable: Boolean + + """Учитывается ли оценка за модуль""" + dependOfGoalMark: Boolean! + + """Процентная зависимость отметки за период от внешней работы""" + markDependencyOfExternalWork: Int + + """Дата/время создания конфигурации оценивания""" + creationDateTime: DateTime! + + """Тип системы оценивания""" + markTypeId: ID! + + """Соответствие % выполнения плана к отметке""" + planCompletingToMarkRelations: [PlanCompletingToMarkRelation!]! +} + +"""""" +input RatingConfigurationInput { + """Идентификатор школы""" + schoolId: ID! + + """Идентификатор параллели""" + stageId: ID! + + """Доступна ли ручная корректировка отметок за учебный период""" + manualChangeAvailable: Boolean! + + """Учитывается ли оценка за модуль""" + dependOfGoalMark: Boolean! + + """Процентная зависимость отметки за период от внешней работы""" + markDependencyOfExternalWork: Int + + """Соответствие % выполнения плана к отметке""" + planCompletingToMarkRelations: [PlanCompletingToMarkRelationInput!]! +} + +"""Список непрочитанных Уведомлений по Заданиям""" +type RecentTaskNotifications { + """ + Непрочитанные уведомления по заданию. Для типа "комментарий" содержит только последний комментарий в рамках каждого задания + """ + taskNotifications: [TaskNotification!]! + + """ + Общее количество непрочитанных уведомлений по заданию после "схлопывания" комментариев + """ + collapsedTaskNotificationsCount: Int! + + """ + Количество непрочитанных уведомлений по заданию после "схлопывания" комментариев и фильтрации по запрошенным типам уведомлений + """ + filteredCollapsedTaskNotificationsCount: Int! + + """Информация о "схлопнутых" комментариях""" + collapsedTaskCommentsInfo: [CollapsedTaskCommentsInfo!]! + + """ + Сопоставление типа и количества непрочитанных Уведомлений. Учитываются все коментарии к заданиям + """ + taskNotificationsCountByType: [NotificationsCountByTypeMap!]! +} + +"""Рекомендация к выполнению задания""" +enum RecommendationToExecutionEnum { + """На уроке""" + LESSON + + """Домашнее задание""" + HOMEWORK + + """Учебное задание""" + EXERCISE + + """Лабораторная работа""" + LABWORK + + """Контрольная работа""" + TEST +} + +"""""" +type ReferralConfigurator { + """ + Участники Акселератора, зарегистрировавшиеся по всем реферальным ссылкам + """ + referralId: UUID! + + """Имя реферала""" + referralFirstName: String! + + """Фамилия реферала""" + referralLastName: String! + + """Тип пользователя: Школьник, Студент""" + userType: String! +} + +"""""" +type ReferralUser { + """ + Участники Акселератора, зарегистрировавшиеся по всем реферальным ссылкам + """ + referralId: UUID! + + """Имя реферала""" + referralFirstName: String! + + """Фамилия реферала""" + referralLastName: String! + + """Дата регистрации реферала""" + registrationDate: DateTime! +} + +"""""" +type ReferrerConfigurator { + """ + Участники Акселератора, зарегистрировавшиеся по всем реферальным ссылкам + """ + referrerId: UUID! + + """Имя реферала""" + referrerFirstName: String! + + """Фамилия реферала""" + referrerLastName: String! + + """ + Количество рефералов, зарагистрировавшихся по реферальной ссылке каждого из реферреров + """ + numberInvited: Int! + + """Количество баллов у реферрера""" + points: Int! + + """Тип пользователя (реферрера)""" + userType: String! +} + +"""""" +enum ReflectionEstimationEnum { + """""" + NO + + """""" + RATHER_NO + + """""" + RATHER_YES + + """""" + YES +} + +"""""" +type Region { + """""" + regionId: UUID! + + """""" + displayableName: String! +} + +"""""" +type RegionAreaPolygon { + """""" + polygonId: UUID + + """""" + fiasAddressObjectId: UUID! + + """""" + polygonName: String! + + """""" + polygonShortName: String! + + """""" + polygon: String + + """""" + centerPoint: String + + """""" + isCity: Boolean! + + """""" + loggingMetrics: LoggingMetrics! +} + +"""Метрики школы региона""" +type RegionSchoolMetrics { + """""" + regionId: UUID! + + """""" + schoolId: UUID! + + """""" + schoolName: String! + + """""" + schoolFullName: String! + + """""" + tagId: Int! + + """""" + integrationPercent: Int + + """""" + totalTeachersCount: Int! + + """""" + activeTeachersPercent: Int! + + """""" + totalStudentsCount: Int! + + """""" + activeStudentsPercent: Int! +} + +"""Группа региональных проверяющих программы по направлению (предмету)""" +type RegionVerifierGroup { + """идентификатор группы региональных проверяющих""" + regionVerifierGroupId: ID! + + """идентификатор программы""" + learningProgramId: ID! + + """идентификатор региона, задания которого проверяются этой группой""" + regionId: UUID! + + """наименование региона""" + regionName: String! + + """ + идентификатор учебного предмета, на проверке которого специализируется группа + """ + subjectId: ID! + + """короткое наименование учебного предмета""" + subjectName: String! + + """статус группы""" + status: RegionVerifierGroupStatus! + + """список региональных проверяющих группы""" + verifiers: [RegionVerifierGroupUser!]! +} + +"""""" +enum RegionVerifierGroupStatus { + """Подготовка""" + PREPARATION + + """Изменена""" + EDITED + + """Действует""" + ACTIVE +} + +"""Член группы региональных проверяющих программы""" +type RegionVerifierGroupUser { + """идентификатор группы региональных проверяющих""" + regionVerifierGroupId: ID! + + """идентификатор проверяющего как пользователя платформы""" + userId: UUID! + + """именование проверяющего, например ФИО""" + userName: String! +} + +"""""" +type RegionalDashboardMutations { + """Возврат к дефолтным настройкам расположения виджетов""" + resetWidgetsViewToDefault(categories: [String!]!): Boolean! + + """ + Конструктор дешборда Директора школы. Сохранение выполненных пользователем настроек страниц + """ + saveUserWidgetsView(widgetsView: [UserWidgetInput!]!): Boolean! +} + +"""""" +type RegionalDashboardQueries { + """Получение информации по школе""" + getRegionalDashboardSchoolInfo(schoolId: ID!): SchoolInfo! + + """Использование Сберкласс""" + loadSberClassUsage(period: String!): SberClassUsage + + """Школы на платформе""" + getSchoolsOnPlatform(period: String!): [EntityOnPlatform!]! + + """Всего в регионе""" + loadVillageAndCitySchools(period: String!): VillageAndCitySchools + + """Школы по региону""" + loadRegionSchoolMetrics(period: String!, tagIds: [ID!]!): [RegionSchoolMetrics!]! + + """Средние показатели по региону (синтетика)""" + loadMapMetricsForCurrentRegion(period: String!): MapMetrics @deprecated(reason: "использовать loadLoggingMetricsForCurrentRegion") + + """Средние показатели по региону""" + loadLoggingMetricsForCurrentRegion(period: String!): LoggingMetrics + + """Показатели по административным единицам региона""" + loadMapMetricsForCurrentRegionByAdministrativeUnits(period: String!): [MapMetricsByAdministrativeUnit!]! + + """Учителя на платформе""" + getTeachersOnPlatform(period: String!, schoolId: UUID!): [EntityOnPlatform!]! + + """Ученики на платформе""" + getStudentsOnPlatform(period: String!, schoolId: UUID!): [EntityOnPlatform!]! + + """Количество учителей, проверивших задания""" + getTeachersVerifiedTasksMetric(schoolId: UUID!, period: String!): Int + + """Количество учеников, отправляшших задания на проверку""" + getStudentsWhoSentTasksForReviewMetric(schoolId: UUID!, period: String!): Int + + """Проверенные задания по уровням целей""" + loadCheckedTasksByGoalLevels(schoolId: UUID!, period: String!): [TasksCountByGoalLevel!]! + + """Задания отправленные на проверку""" + loadTasksSubmittedForReview(schoolId: UUID!, period: String!): TasksCountInfo! + + """Доля активных учеников""" + loadPercOfActiveStudentsMetrics(schoolId: UUID!, period: String!): [PercOfActiveStudentsMetrics!]! + + """Активность учителей по школе в разрезе день/неделя/месяц""" + getTeachersActivityBySchool(period: String!, schoolId: UUID!, groupBy: String!): [DashboardUsersActivity!]! + + """Активность учеников по школе и параллели в разрезе день/неделя/месяц""" + getStudentsActivityBySchoolAndStages(period: String!, schoolId: UUID!, stageIds: [Int!], groupBy: String!): [DashboardUsersActivity!]! + + """Загруженность учителей""" + getTeachersWorkload(period: String!, schoolId: UUID!): [TeachersWorkload!]! + + """Загруженность учителей по предмету""" + getTeachersWorkloadBySubject(period: String!, schoolId: UUID!, subjectId: Int!): [TeachersWorkloadBySubject]! + + """Загруженность учителей по предмету (для директора)""" + getTeachersWorkloadBySubjectForPrincipal(period: String!, schoolId: UUID!, subjectId: Int!): [TeachersWorkloadBySubjectForPrincipal]! + + """Получение текущего региона""" + getCurrentRegion: Region! + + """Работа с заданиями""" + getWorkWithTasks(period: String!, schoolId: UUID!, subjectIds: [Int!]!, stageIds: [Int!]!, from: Int!, count: Int!, simpleFrom: Int!, simpleCount: Int!): WorkWithTasks! + + """Получение карт районов региона""" + getRegionAreasMap(period: String!): [AreaPolygon!]! @deprecated(reason: "использовать getRegionAreasWithMetricsMap") + + """Получение карт с метриками""" + getRegionAreasWithMetricsMap(period: String!): [RegionAreaPolygon!]! + + """Список доступных виджетов""" + loadEnabledWidgets: EnabledWidgets! + + """Настройки расположения виджетов""" + loadUserWidgetsView: [UserWidget!]! +} + +"""Фильтр предстоящих мероприятий по доступности регистрации""" +enum RegistartionStatusEnum { + """Все будущие события для студента ( фильтр по умолчанию)""" + ANY + + """ + Событие для которого есть возможность записаться (регистрация ИЛИ лист ожидания) + """ + PARTICIPATION_AVAILABLE + + """ + Событие у которого доступен лист ожидания (места на регистрацию тоже могут быть доступны но фильтр только по доступности листа ожидания) + """ + WAITLIST_AVAILABLE + + """Событие на которое студент встал в лист ожидания или зарегистрировался""" + IS_PARTICIPATING + + """Событие на которое студент зарегистрировался""" + IS_REGISTERED + + """Событие на которое студент встал в лист ожидания""" + IS_IN_WAITLIST + + """Событие время на регистрацию на которое завершилось""" + CLOSED +} + +"""Модель восстановления студента""" +input ReinstateStudentInput { + """Идентификатор восстанавливаемого студента""" + studentId: UUID! + + """Идентификатор класса, в который восстанавливается студент""" + stageGroupId: ID! + + """Идентификатор коалиции, в которую восстанавливается студент""" + coalitionId: ID! +} + +"""Информация о выполненной мутации""" +type RejectAnswerResponse { + """Полная информация по Заданию в контексте Студента""" + studentTaskInfo: StudentTaskInfo! +} + +"""""" +enum RememberMeState { + """""" + ON + + """""" + OFF + + """""" + UNDEFINED +} + +"""""" +type RemoveLessonLearningActivityRespose { + """""" + success: Boolean! + + """""" + changedFinalMarks: [JournalFinalStudentMark] +} + +"""""" +input RemoveTaskSetRequest { + """ + идентификатор набора заданий (base_playlists.base_playlist_id или teacher_playlists.teacher_playlist_id) + """ + taskSetId: ID! + + """тип плейлиста""" + taskSetType: PlaylistType! + + """ + флаг - проверять аффектит ли учебный процесс студентов удаление плейлиста + """ + isNeedToCheckAffecting: Boolean! +} + +"""""" +type RemoveTaskSetResponse { + """удаляемый плейлист""" + removingTaskSet: TaskSet! + + """успешно ли выполнение запроса (пройдены ли все проверки)""" + isSuccess: Boolean! +} + +"""""" +type Report { + """""" + reportCode: Int! + + """""" + reportName: String! + + """""" + versionPropertyCode: String! +} + +"""""" +type ReportExcelFile { + """""" + fileName: String! + + """""" + base64Data: String + + """""" + url: String +} + +"""""" +type ReportGroup { + """""" + reportGroupCode: Int! + + """""" + reportGroupName: String! + + """""" + reports: [Report]! +} + +"""""" +type ReportPeriod { + """""" + activityStartDate: Date! + + """""" + activityEndDate: Date! + + """""" + periodStartDate: Date! + + """""" + periodEndDate: Date +} + +"""""" +input ReportPeriodInput { + """""" + activityStartDate: Date! + + """""" + activityEndDate: Date! + + """""" + periodStartDate: Date! + + """""" + periodEndDate: Date +} + +"""""" +input ReportUserSettingInput { + """""" + propertyCode: String! + + """""" + value: String! +} + +"""Уровень видимости данных в синхронных отчетах""" +enum ReportsDataAccessLevel { + """Система""" + SYSTEM + + """Регион""" + REGION + + """Школа""" + SCHOOL +} + +"""""" +type RequestDataModel { + """""" + pagingCount: Int! + + """""" + requests: [RequestModel]! +} + +"""""" +type RequestModel { + """""" + requestId: UUID! + + """""" + shortFio: String! + + """""" + birthdayDate: Date! + + """""" + email: String! + + """""" + createTs: DateTime! + + """""" + modifyTs: DateTime + + """""" + hasAgreements: Boolean! +} + +"""Статус заявки на участие в проекте акселератора""" +enum RequestState { + """""" + CREATED + + """""" + RECLAIMED + + """""" + REJECTED + + """""" + APPROVED + + """""" + CLOSED +} + +"""""" +type RequiredTaskCountByTaskType { + """Тип Слота Заданий -- информационных, проверочный и тд""" + taskType: TaskTypeEnum! + + """Минимальное количество Заданий соответствующего типа""" + requiredTaskCount: Int! +} + +"""Результат выполнения модуля""" +enum ResultModuleCompletion { + """Успех""" + SUCCESS + + """Провал по капитуляции""" + FAIL_BY_SURRENDER + + """Провал по расчету балла""" + FAIL_BY_CALCULATION + + """Провал по дедлайну регистрации""" + FAIL_BY_REGISTRATION_DEADLINE + + """Провал по дедлайну выполнения""" + FAIL_BY_EXECUTION_DEADLINE + + """Провал по дедлайну проверок""" + FAIL_BY_CHECKING_DEADLINE + + """Провал по сбросу оценки""" + FAIL_BY_RESET_RATING + + """Команда не успела сформироваться""" + FAIL_BY_TEAM_NOT_FORMED + + """Дефолтная бранча отсутсвует в проекте студента""" + FAIL_BY_ABSENT_DEFAULT_BRANCH + + """ + Студент забыл зарегистрироваться на экзаменационный ивент (мероприятие) + """ + FAIL_BY_FORGOT_TO_REGISTER_ON_EXAM_EVENT + + """Студент забыл зарегистрироваться на экзаменационный модуль (проект)""" + FAIL_BY_FORGOT_TO_REGISTER_ON_EXAM_MODULE + + """ + Студент забыл зарегистрироваться в обоих местах - экзаменационный модуль (проект) и ивент (мероприятие) + """ + FAIL_BY_FORGOT_TO_REGISTER_ON_BOTH_EXAM_MODULE_AND_EVENT + + """ + Студент зарегистрироваться экзаменационный модуль и ивент, но не явился на него (не присутствовал в аудитории) + """ + FAIL_BY_STUDENT_ABSENCE_ON_EXAM_EVENT + + """Провал по причине отчисления студента""" + FAIL_BY_EXPELLED_STUDENT + + """Провал по причине заморозки студента""" + FAIL_BY_FREEZING_STUDENT + + """Провал по капитуляции с курса""" + FAIL_BY_SURRENDER_FROM_COURSE + + """Провал по причине отсутствия файлов с решением""" + FAIL_BY_SOLUTION_FILE_NOT_FOUND +} + +"""""" +input ResumeFilterInput { + """""" + shortFioSearch: String! + + """""" + projectRoleId: [UUID] + + """""" + regionId: UUID + + """""" + inviteStartDate: Date + + """""" + inviteEndDate: Date +} + +"""""" +type ResumeForCapitan { + """""" + resumeId: UUID! + + """""" + userId: UUID! + + """""" + shortFio: String! + + """""" + avatarURL: String! + + """""" + regionName: String! + + """""" + educationOrgName: String! + + """""" + speciality: String! + + """""" + projectRoleNames: [String]! + + """""" + aboutMe: String! + + """""" + email: String + + """""" + telegram: String + + """""" + vkontakte: String + + """""" + eduDocs: [EducationDocument]! + + """""" + resumeURL: String! + + """""" + resumeFileName: String! + + """""" + projectId: UUID + + """""" + projectName: String + + """""" + inviteId: UUID + + """""" + inviteDate: Date + + """""" + inviteStatus: String + + """""" + isFavoriteByCurrentTeam: Boolean! +} + +"""""" +type ResumeForStudent { + """""" + resumeId: UUID! + + """""" + userId: UUID! + + """""" + shortFio: String! + + """""" + avatarURL: String! + + """""" + regionName: String! + + """""" + educationOrgName: String! + + """""" + speciality: String! + + """""" + projectRoleNames: [String]! + + """""" + aboutMe: String! + + """""" + projectId: UUID + + """""" + projectName: String +} + +"""""" +input ResumeInput { + """""" + avatarURL: String! + + """""" + regionId: UUID! + + """""" + regionName: String! + + """""" + projectRoleId: [UUID]! + + """""" + projectRoleOtherName: String + + """""" + educationOrgId: UUID! + + """""" + educationOrgName: String! + + """""" + speciality: String! + + """""" + aboutMe: String! + + """""" + email: String + + """""" + telegram: String + + """""" + vkontakte: String + + """""" + educationDocs: [EducationDocumentInput]! + + """""" + resumeURL: String! + + """""" + resumeFileName: String! +} + +"""""" +type ResumeModel { + """""" + resumeId: UUID! + + """""" + shortFio: String! + + """""" + avatarURL: String! + + """""" + regionId: UUID! + + """""" + regionName: String! + + """""" + educationOrgId: UUID! + + """""" + educationOrgName: String! + + """""" + speciality: String! + + """""" + projectRoles: [ProjectRoleFromDirectory]! + + """""" + aboutMe: String! + + """""" + email: String + + """""" + telegram: String + + """""" + vkontakte: String + + """""" + eduDocs: [EducationDocument]! + + """""" + counterViewed: [CounterView]! + + """""" + counterInvited: [CounterInvite]! + + """""" + viewCount: Int! + + """""" + inviteCount: Int! + + """""" + resumeURL: String! + + """""" + resumeFileName: String! + + """""" + status: String! + + """""" + isInvitedByCurrentTeam: Boolean! + + """""" + isFavoriteByCurrentTeam: Boolean! +} + +"""""" +type ResumeShortModel { + """""" + resumeId: UUID! + + """""" + shortFio: String! + + """""" + avatarURL: String! + + """""" + regionName: String! + + """""" + eduOrgName: String! + + """""" + projectRoleNames: [String]! + + """""" + aboutMe: String! + + """""" + inviteId: UUID + + """""" + inviteDate: Date + + """""" + isFavoriteByCurrentTeam: Boolean! +} + +"""""" +type ResumesData { + """""" + totalCount: Int! + + """""" + resumes: [ResumeShortModel]! +} + +"""Обратная связь по ревью, данная проверяемым""" +type ReviewFeedback { + """Идентификатор""" + id: ID! + + """Заполненный чеклист по p2p проверке по которой дан фидбэк""" + filledChecklist: FilledChecklist! + + """Текст фидбэка""" + comment: String! + + """оценки ревьюверу""" + reviewFeedbackCategoryValues: [ReviewFeedbackCategoryValue]! +} + +"""""" +type ReviewFeedbackCategoryValue { + """Идентификатор""" + id: ID! + + """Критерий по кторому была оценена p2p проверка проверяемым""" + feedbackCategory: FeedbackCategoryEnum! + + """Оценка по критерию""" + feedbackValue: FeedbackCategoryValueEnum! +} + +"""""" +input ReviewFeedbackCategoryValueInput { + """Критерий""" + feedbackCategory: FeedbackCategoryEnum! + + """Оценка по критерию""" + feedbackCategoryValue: FeedbackCategoryValueEnum! +} + +"""""" +input ReviewFeedbackInput { + """Идентификатор""" + filledChecklistId: ID! + + """Фидбэк по p2p ревью, который привязан к конкретному чек-листу""" + comment: String! + + """заполненные оценки по критериям""" + reviewFeedbackCategoryValues: [ReviewFeedbackCategoryValueInput!]! +} + +"""""" +enum RoleStatus { + """Работает""" + ACTIVE + + """Уволен""" + INACTIVE +} + +"""Резолвер маршрутов""" +type RouteInfoQueries { + """Получение маршрута для пользователя""" + getRouteInfo: String! +} + +"""Типы отчетов на получение PRP/CRP""" +enum RpReportTypeEnum { + """""" + PRP_REPORT + + """""" + CRP_REPORT + + """""" + ALL_POINTS_REPORT +} + +"""Прогресс распродажи""" +type RpSaleProgress { + """Тип распродажи""" + rpType: RpType! + + """Текущий процент прогресса""" + progressPercentage: Int! +} + +"""Настройки распродажи""" +type RpSaleSetting { + """Идентификатор школы""" + schoolId: UUID! + + """Имя школы""" + schoolName: String! + + """Сущность параллели""" + stage: Stage! + + """Кол-во студентов в параллели""" + studentsCountInStage: Int! + + """Настройки распродажи PRP""" + saleSettingPRP: SaleSettingPRP! + + """Настройки распродажи CRP""" + saleSettingCRP: SaleSettingCRP! +} + +""" +Модель описывает данные необходимые для обновления информации о распродаже +""" +input RpSaleSettingInput { + """""" + rpType: RpType! + + """Идентификатор школы""" + schoolId: UUID! + + """Идентификатор параллели""" + stageId: ID! + + """Флаг автоматической настройки распродажи""" + autotune: Boolean! + + """ + Количество RP в невозвратном пуле для инициации распродажи (если задано) + """ + irrevocableRpCountToStartSale: Int + + """ + Количество RP в невозвратном пуле для завершения распродажи (если задано) + """ + irrevocableRpCountToFinishSale: Int +} + +"""Типы RP распродажи""" +enum RpType { + """""" + CRP + + """""" + PRP +} + +"""План на класс""" +type S21ClassPlan { + """Идентификатор плана на класс""" + classPlanId: ID + + """Идентификатор плана на параллель""" + stagePlanId: ID + + """Идентификатор группы по предмету""" + classSubjectId: ID + + """Название предмета""" + subjectName: String! + + """Дата/время начала плана""" + startDate: DateTime + + """Статус плана""" + isPublished: Boolean! + + """Количество проектов""" + projectCount: Int + + """Имя класса""" + className: String! + + """Цели плана""" + planGoals: [S21ClassPlanGoal!]! +} + +"""Параллели и Планы на классы по предметам""" +type S21ClassPlanByStagesSubjects { + """Наименование предмета выбранного плана группы класса""" + subjectName: String! + + """Список паралеллей и планов для групп по предмету""" + stageClassPlans: [StageS21ClassPlans] +} + +"""Цели плана на класс""" +type S21ClassPlanGoal { + """порядковый номер""" + order: ID + + """Идентификатор цели класса плана""" + classPlanGoalId: ID + + """Идентификатор цели""" + goalId: ID + + """Идентификатор глобального курса""" + courseId: ID + + """Идентификатор локального курса""" + localCourseId: ID + + """Название цели""" + goalName: String! + + """Тип проекта (групповой, индивидуальный)""" + assignmentType: TaskAssignmentEnum @deprecated(reason: "Под удаление. Использовать executionType") + + """ + "Регистрация" + """ + signUpDate: DateTime + + """ + "Начало выполнения" + """ + beginDate: DateTime + + """ + "Дедлайн" + """ + deadlineDate: DateTime + + """ + "Проверка" + """ + checkDate: DateTime + + """Просмотр контента""" + isContentAvailable: Boolean! + + """Правила подсчета даты и времени изменённого модуля/проекта""" + rules: StagePlanRules! + + """Тип выполнения""" + executionType: ModuleExecutionType + + """Настройки команд""" + teamSettings: TeamSettings + + """Флаг, указывающий на игнорирование любых дедлайнов для модуля""" + deadlineFree: Boolean! + + """Тип курса""" + courseType: CourseType + + """Количество проектов в курсе""" + courseProjectCount: Int + + """ + Флаг, указывающий на эквивалентность правил для конструктора условий в плане на параллель и плане на класс + """ + equivalentConstructors: Boolean + + """В курсе есть проект без дедлайнов и со случайным формированием команды""" + hasDeadlineFreeRandomTeam: Boolean +} + +"""""" +input S21ClassPlanGoalInput { + """Идентификатор цели плана на класс""" + classPlanGoalId: ID + + """ + "Регистрация" + """ + signUpDate: DateTime + + """ + "Начало выполнения" + """ + beginDate: DateTime + + """ + "Дедлайн" + """ + deadlineDate: DateTime + + """ + "Проверка" + """ + checkDate: DateTime + + """Идентификатор модуля""" + goalId: ID + + """Флаг, указывающий на игнорирование любых дедлайнов для модуля""" + deadlineFree: Boolean! + + """Идентификатор глобального курса""" + courseId: ID + + """Идентификатор локального курса""" + localCourseId: ID + + """Номер курса по порядку""" + orderCourse: Int + + """Номер по порядку""" + order: Int +} + +"""""" +input S21ClassPlanInput { + """Идентификатор плана на класс""" + classPlanId: ID + + """Идентификатор плана на параллель""" + stagePlanId: ID! + + """Идентификатор группы по предмету""" + classSubjectId: ID! + + """Дата/время начала плана""" + startDate: DateTime! + + """Статус плана""" + isPublished: Boolean! + + """Флаг синхронизации плана с планом на уровень выше""" + isSynchronized: Boolean + + """Цели плана""" + planGoals: [S21ClassPlanGoalInput!]! +} + +"""""" +type S21ClassPlanSavingProgress { + """План находится в процессе сохранения""" + isSavingInProgress: Boolean! + + """Кол-во успешно обновленных студентов""" + studentsUpdatedSuccess: Int! + + """Всего студентов для обновления плана""" + studentsTotal: Int! + + """Кол-во студентов с ошибкой обновления""" + studentsUpdatedFail: Int! + + """Является ли процесс сохранения возвращением к предыдущей версии""" + isRollback: Boolean! +} + +"""Массовая выдача награды ученикам""" +type S21MassAddAwardToUsersResponse { + """Сообщение о результатах массовой выдачи наград""" + message: String! + + """Сформировать на фронте файл отчета или нет""" + createFile: Boolean! +} + +"""""" +type S21Notification { + """""" + id: ID! + + """""" + type: S21NotificationEnum! + + """""" + groupName: String + + """""" + title: String! + + """""" + message: String! + + """""" + relatedObjectType: S21RelatedObjectEnum! + + """""" + relatedObjectId: ID! + + """""" + time: DateTime! + + """""" + wasRead: Boolean! +} + +"""""" +enum S21NotificationEnum { + """""" + S21_CANCEL_CHECKOUT_FOR_VERIFIABLE + + """""" + S21_CANCEL_CHECKOUT_FOR_VERIFIER + + """""" + S21_TEAM_DISBANDED + + """""" + S21_GROUP_PROJECT_FAILED + + """""" + S21_ADD_AWARD + + """""" + S21_CALC_PROJECT_FINAL_POINT + + """""" + S21_LEVEL_UP + + """""" + S21_RECORD_FOR_P2P_CHECK + + """""" + S21_EVENT_FREE_SPACE + + """""" + S21_INVITE_TO_TEAM + + """""" + S21_SALE_PLANNED + + """""" + S21_SALE_FINISHED + + """""" + S21_SALE_STARTED + + """""" + S21_DEADLINE_STARTED + + """""" + S21_DEADLINE_IS_OVER + + """""" + S21_CHEAT_QUICK_ACTION + + """""" + S21_TOURNAMENT_END + + """""" + S21_EVENT_UPCOMING + + """""" + S21_CRP_SALE_PLANNED + + """""" + S21_CRP_SALE_FINISHED + + """""" + S21_CRP_SALE_STARTED + + """""" + S21_APPROVE_PARTICIPANT_EVENT_WITH_CHANGES + + """""" + S21_APPROVE_PARTICIPANT_EVENT + + """""" + S21_REJECT_PARTICIPANT_EVENT + + """""" + S21_COINS_PLUS + + """""" + S21_COINS_MINUS + + """""" + S21_PENALTY_SET + + """""" + S21_PENALTY_SCHEDULE + + """""" + S21_PENALTY_WORKED_OFF + + """""" + S21_PENALTY_CANCELLED + + """""" + S21_EXTRA_FOR_VERIFIER + + """""" + S21_PRIORITY_FOR_VERIFIER + + """""" + S21_EXTRA_FOR_VERIFIABLE + + """""" + S21_PRIORITY_FOR_VERIFIABLE + + """""" + S21_PEER_REVIEW_ABSENCE + + """""" + S21_UPCOMING_P2P_FOR_VERIFIER + + """""" + S21_UPCOMING_P2P_FOR_VERIFIABLE + + """""" + S21_GROUP_PROJECT_DISBANDMENT_TEAM_MODERATOR + + """""" + S21_GROUP_PROJECT_DISBANDMENT_TEAM_AVTO + + """""" + S21_GROUP_PROJECT_TEAM_EXIT_MEMBER + + """""" + S21_GROUP_PROJECT_DISBANDMENT_TEAM_TEAMLEAD + + """""" + S21_PLATFORM_TASK_UPDATED +} + +"""""" +type S21NotificationQueries { + """ + -----------------------------Запросы студента----------------------------- + Получить количество уведомлений + """ + getS21NotificationsCount(wasReadIncluded: Boolean): Int! + + """Получить пользовательские уведомления""" + getS21Notifications(paging: PagingInput!): S21NotificationReport! +} + +"""""" +type S21NotificationReport { + """""" + notifications: [S21Notification!]! + + """""" + unreadCount: Int! + + """""" + totalCount: Int! + + """""" + groupNames: [String!]! +} + +"""""" +enum S21RelatedObjectEnum { + """""" + AWARD + + """""" + PROJECT + + """""" + PROFILE + + """""" + EVENT + + """""" + MY_EVENTS + + """""" + INVITATIONS + + """""" + DEADLINE + + """""" + SALE + + """""" + COINS + + """""" + PENALTY + + """""" + CALENDAR + + """""" + DASHBOARD +} + +"""План на параллель""" +type S21StagePlan { + """Идентификатор плана на параллель""" + stagePlanId: ID + + """Глобальный план""" + globalPlan: GlobalPlan! + + """Название параллели""" + stageName: String + + """Название предмета""" + subjectName: String + + """Статус плана""" + isPublished: Boolean + + """Цели плана""" + planGoals: [S21StagePlanGoal!]! + + """Количество проектов""" + projectCount: Int! + + """Идентификатор параллели""" + stageId: ID! + + """Идентификатор предмета""" + subjectId: ID! +} + +"""Цели плана на параллель""" +type S21StagePlanGoal { + """Идентификатор цели плана на параллель""" + stagePlanGoalId: ID + + """Идентификатор цели""" + goalId: ID + + """Идентификатор глобального курса""" + globalCourseId: ID + + """Название цели""" + goalName: String + + """Тип проекта (групповой, индивидуальный)""" + assignmentType: TaskAssignmentEnum @deprecated(reason: "Под удаление. Использовать executionType") + + """ + "Начать с ..." + """ + beginFrom: Int! + + """ + "Часы на проект" + """ + projectHours: Int + + """ + "Регистрация" + """ + signUpFrom: Int! + + """ + "Проверка" + """ + checkFrom: Int + + """Просмотр контента""" + isContentAvailable: Boolean! + + """Порядковый номер цели""" + order: Int! + + """Имя абстрактного глобального предмета""" + subjectName: String + + """Ожидаемая трудоемкость в часах""" + laboriousness: Int + + """Тип выполнения""" + executionType: ModuleExecutionType + + """Тип курса""" + courseType: CourseType + + """Количество проектов в курсе""" + courseProjectCount: Int + + """Флаг, указывающий на игнорирование любых дедлайнов для модуля""" + deadlineFree: Boolean! + + """ + Флаг, указывающий на эквивалентность правил для конструктора в глобальном плане и плане на параллель + """ + equivalentConstructors: Boolean + + """Настройки формирования команд""" + teamSettings: TeamSettings + + """В курсе есть проект без дедлайнов и со случайным формированием команды""" + hasDeadlineFreeRandomTeam: Boolean +} + +"""Модель ввода для целей плана на параллель""" +input S21StagePlanGoalInput { + """Идентификатор цели плана на параллель""" + stagePlanGoalId: ID + + """Идентификатор цели""" + goalId: ID + + """Идентификатор глобального курса""" + globalCourseId: ID + + """ + "Начать с ..." + """ + beginFrom: Int! + + """ + "Часы на проект" + """ + projectHours: Int + + """ + "Регистрация" + """ + signUpFrom: Int! + + """ + "Проверка" + """ + checkFrom: Int + + """Просмотр контента""" + isContentAvailable: Boolean! + + """Порядковый номер цели""" + order: Int! + + """Флаг, указывающий на игнорирование любых дедлайнов для модуля""" + deadlineFree: Boolean! +} + +"""Основное инфо об ученике Школы 21""" +type S21StudentPublicProfileBasicInfo { + """Логин""" + login: String! + + """Имя""" + firstName: String + + """Фамилия""" + lastName: String + + """Отчество""" + middleName: String + + """Аватар""" + avatarUrl: String + + """Уровень""" + level: Int + + """Идентификатор пользователя""" + userId: UUID! + + """Идентификатор школы пользователя""" + schoolId: UUID + + """Школа""" + school: School +} + +"""""" +type SC21BaCalendarMutations { + """ + S21. Добавление свободного времени для проверки (опционально указывается модуль, который будет проверяться) + """ + addEventToTimetable(start: DateTime!, end: DateTime!, goalId: ID!, isMultiVisible: Boolean!): [CalendarEvent!]! + + """S21. Удаление свободного времени для проверки""" + deleteEvent(eventId: ID!): Boolean! + + """S21. Изменение свободного таймслота для проверки""" + changeEventSlot(eventSlotId: ID!, start: DateTime!, end: DateTime!, goalId: ID): [CalendarEvent!]! + + """S21. Удаление свободного таймслота для проверки""" + deleteEventSlot(eventSlotId: ID!): Boolean! + + """S21. Отмена записи на проверку""" + removeBookingFromEventSlot(bookingId: ID!): Boolean! + + """ + S21. Создание записей на проверку групповых проектов на слоты, созданные пользователями с фролью INSPECTION_STAFF + """ + createBookingsForInspectionStaff: [CalendarBooking!]! +} + +"""""" +type SC21BaCalendarQueries { + """S21. Запрос всех проверок БА начиная за конкретный период""" + getMyUpcomingBookingsByDate(startDateTime: DateTime!, endDateTime: DateTime!): [CalendarBooking!]! + + """ + S21. Метод возвращает список событий по идентификатору школы вызывающего и по списку типов событий + """ + getCalendarEvents( + """идентификаторы типа события""" + eventCodes: [String!]! + + """Параметр для получения мероприятий до указанного времени""" + before: DateTime + + """Параметр для получения мероприятий после указанного времени""" + after: DateTime + + """Параметр фильтра по дате окончания до""" + endDateBefore: DateTime + + """Параметр фильтра по дате окончания после""" + endDateAfter: DateTime + + """Фильтр по названию мероприятия""" + nameFilter: String + + """Фильтр по статусам предложенных мероприятий""" + statuses: [ParticipantEventStatus] + + """Параметры сортировки""" + sortingField: SortingField + + """Параметры пагинации""" + page: PagingInput! + ): [CalendarEvent!]! + + """S21. Запрос событий БА для выбранного диапазона""" + getMyCalendarEvents(from: DateTime!, to: DateTime!): [CalendarEvent!]! + + """ + S21. Метод возвращает список групповых модулей, имеющих p2p проверки, по идентификатору школы вызывающего + """ + getModulesForFreeSlot: [Goal!]! +} + +"""""" +type SC21BaTaskCheckMutations { + """S21. Ручная обработка дедлайнов""" + handleProjectDeadlines(stageSubjectGroupPlanGoalId: ID!): Boolean + + """ + S21. Отметка что запланированная встреча не состоялась из-за отсутствия одного из участников + """ + markAbsenceInProtocol(bookingId: ID!): BookingStatusEnum! + + """ + S21. Сохранить введенные данные, записать время окончания проверки, вычислить продолжительность проверки + """ + completeP2pCheck(checklistFilledInput: ChecklistFilledInput!): Float! + + """S21. Инициация дополнительной проверки по ответу студента""" + initiateAdditionalCheck(additionalCheckInitiationInputModel: AdditionalCheckInitiationInputModel!): Boolean! + + """S21. Обновление настроек распродаж""" + batchUpdateRpSaleSetting(rpSaleSettings: [RpSaleSettingInput!]!): [RpSaleSetting!]! + + """S21. Старт Р2Р проверки""" + startP2pCheck(filledChecklistId: ID!, actualStartTime: DateTime!): FilledChecklist! + + """S21. Сохранение приватного фидбэка на команду""" + savePrivateFeedback(filledChecklistId: ID!, feedbacks: [PrivateFeedbackInput!]!): Boolean! +} + +"""""" +type SC21BaTaskCheckQueries { + """S21. Получить подробную информацию об авто проверке""" + getAutoCheckReportDetailInfo(autoCheckReportId: ID!): AutoCheckReportDetailInfo! + + """S21. Получить подробную информацию о п2п проверке""" + getP2pCheckDetailInfo(filledChecklistId: ID!): P2pCheckDetailInfo! + + """S21. Получить подробную информацию о попытке""" + getAttemptCheckDetailInfo(studentGoalAttemptId: ID!): AttemptCheckDetailInfo! + + """S21. Получение информации о попытке и проверках за нее""" + getAttemptWithChecksInfoById(studentGoalAttemptId: ID!): AttemptWithChecks! + + """S21. Получение финального результата за проект""" + getStudentGoalFinalScoreById(studentGoalId: ID!): StudentGoalFinalScore! @deprecated(reason: "use getStudentGoalFinalScoreByLoginAndGoalId") + + """S21. Получение модуля студента по id студента и id модуля""" + getStudentModuleByStudentIdAndGoalId(goalId: ID!, studentId: UUID!): StudentModule! + + """ + S21. Получение ссылки на приватный студенческий Gitlab проект по задаче студента + """ + getLinkToPrivateStudentGitlabProjectByStudentTaskId(studentTaskId: ID!): GitlabLink! + + """S21. Запрос данных для подсчета разбалловки""" + getCountPointsInfo(taskId: ID!, sectionId: Int!): CountInfo! + + """S21. Запрос последнего созданного чеклиста к заданию""" + getLatestChecklistForTask(taskId: ID!): Checklist + + """S21. Получение информации для назначения дополнительной проверки""" + getAdditionalCheckInitialData(studentAnswerId: ID!): AdditionalCheckInitialData! + + """S21. Получение информации о Р2Р проверки. Возвращает чек-лист""" + getP2pInfo(filledChecklistId: ID!): FilledChecklist! + + """S21. Получения отзыва сотрудника""" + getFeedbackFromStaff(filledChecklistId: ID!): FeedbackFromStaff! +} + +"""""" +type SC21ProjectFlowMutations { + """S21. Регистрация на экзамен и экзаменационный тест""" + registerForExam(goalId: ID!): Boolean! + + """S21. Регистрация на проект (индивидуальный, групповой, стажировка)""" + registerForProject(goalId: ID!): Boolean! + + """S21. Старт проекта""" + startProject(goalId: ID!): Boolean! + + """S21. Завершение выполнения проекта (индивидуальный, групповой)""" + finishProject(taskId: ID!): DateTime! + + """ + S21. Завершение экзаменационного задания и отправка на автопроверку в систему GitLab + """ + finishExamTask(examEventId: ID!, currentLevelId: ID!, taskId: ID!): Boolean! + + """S21. Капитуляция с индивидуального или группового проекта""" + surrenderFromProject(taskId: ID!): Boolean! + + """S21. Капитуляция с экзаменационного модуля или теста""" + surrenderFromExam(goalId: ID!, examEventId: ID, taskId: ID, skillId: ID): Boolean! + + """ + S21. Запуск повторной попытки выполнения проекта (стажировка, индивидуальный, групповой). + Возвращает ссылку на проект в GitLab только для стажировки, в остальных случаях null. + """ + retryProject(taskId: ID!): Boolean! + + """ + S21. Запуск повторной попытки выполнения экзамена и экзаменационного теста + """ + retryExam(goalId: ID!): Boolean! +} + +"""""" +type SC21StudentTaskCheckMutations { + """S21. Сохранить результат опроса у студента""" + saveStudentFeedbackResults(studentFeedbackId: ID!, studentFeedbackResults: [StudentFeedbackResultInput!]!): Boolean! + + """S21. Включить онлайн p2p проверку для существующей записи на проверку""" + enableOnlineP2pCheck(bookingId: ID!): CalendarBooking! + + """ + S21. Предварительно загружаем файлы решения, ставим им статус ожидания загрузки + """ + markFileSolutionPending(taskId: ID!, initialFileEvents: [StudyProcessFileInitialInput!]!): [StudyProcessFile!]! + + """S21. Сохранить файл решения задания""" + markFileSolutionUploaded(taskId: ID!, fileUploadEvents: [StudyProcessFileUploadInput!]!): [StudyProcessFile!]! + + """S21. Пользователь отменил загрузку файла решения задания""" + markFileSolutionUploadCancelled(taskId: ID!, studyProcessFileId: ID!): StudyProcessFile! + + """S21. Записать ошибку сохранения файла решения задания""" + markFileSolutionFailedToUpload(taskId: ID!, fileCancelEvent: [StudyProcessFileFailOrCancelInput!]!): [StudyProcessFile!]! + + """ + S21. Сохранить комментарий к ответу студента, для задания с платформенным решением + """ + saveSolutionComment(taskId: ID!, comment: String!): StudentAnswerComment! +} + +"""""" +type SC21StudentTaskCheckQueries { + """S21. Получить все незавершенные опросы у студента для попапа""" + getAllInCompletedStudentFeedbackPopup: [StudentFeedbackPopup!]! + + """S21. Получить опрос студента""" + getStudentFeedbackById(studentFeedbackId: ID!): StudentFeedback! + + """ + S21. Получить видео в незавершенном статусе для переданного чеклиста, если есть + """ + getVideoInNotFinalStatus(filledChecklistId: ID!): OnlineReviewVideo + + """ + S21. Получить информацию о текущем загруженном решении студента по заданию, для заданий с платформенной загрузкой решения + """ + getPlatfSolutionInfo(studentGoalAttemptId: ID!): PlatfSolutionInfo + + """ + S21. Получить идентификатор группы доступа к файлам по идентификатору ответа студента + """ + getProjectAccessGroupIdByStudentAnswerId(answerId: ID!): ID! + + """S21. Получить тип загружаемого решения задания""" + getTaskSolutionType(taskId: ID!): TaskSolutionTypeEnum! +} + +"""Все школы (безопасные, без доп.инфы)""" +type SafeSchool { + """""" + id: ID! + + """""" + fullName: String! + + """""" + shortName: String! + + """Тип учреждения""" + organizationType: String! + + """Идентификатор типа учреждения""" + organizationTypeId: ID! + + """Идентификатор иерархии орг.единицы""" + organizationHierarchyTypeId: ID! + + """Адрес""" + address: String! + + """""" + logo: String + + """Идентификатор""" + identifier: String! + + """""" + region: Region! +} + +"""Настройки распродажи CRP""" +type SaleSettingCRP { + """Идентификатор статуса распродажи""" + statusId: Int! + + """Флаг автоматической настройки""" + autotune: Boolean! + + """Количество CRP в невозвратном пуле параллели""" + stageIrrevocableCRPCount: Int! + + """Количество CRP в невозвратном пуле для инициации распродажи""" + irrevocableCRPCountToStartSale: Int! + + """Количество CRP в невозвратном пуле для завершения распродажи""" + irrevocableCRPCountToFinishSale: Int! + + """Дата начала распродажи (проставляется в момент инициации распродажи)""" + saleStartTime: DateTime +} + +"""Настройки распродажи PRP""" +type SaleSettingPRP { + """Идентификатор cтатуса распродажи""" + statusId: Int! + + """Флаг автоматической настройки""" + autotune: Boolean! + + """Количество PRP в невозвратном пуле параллели""" + stageIrrevocablePRPCount: Int! + + """Количество PRP в невозвратном пуле для инициации распродажи""" + irrevocablePRPCountToStartSale: Int! + + """Количество PRP в невозвратном пуле для завершения распродажи""" + irrevocablePRPCountToFinishSale: Int! + + """Дата начала распродажи (проставляется в момент инициации распродажи)""" + saleStartTime: DateTime +} + +"""Информация о выполненной мутации""" +type SaveAnswerResponse { + """Полная информация по Заданию в контексте Студента""" + studentTaskInfo: StudentTaskInfo! + + """ + Информация о текущем состоянии связанной с Заданием Персональной Цели (если есть) + """ + personalObjectiveProgressInfo: PersonalObjectiveProgressInfo + + """ + информация о прогрессе уроков, в которые входит задание, на которое был отправлен ответ + """ + lessonProgressInfos: [StudentLessonProgressInfo] + + """ + Информация о текущем состоянии Домашней Работы, с которой связан данный ответ на Задание (если ответ был отправлен в рамках некоторой Домашней Работы) + """ + homeworkProgressInfo: AnswerRelatedHomeworkProgressInfo + + """ + Информация о текущем состоянии Закрывающего теста, + с которым связан данный ответ на Задание (если ответ был отправлен в рамках некоторого закрывающего теста) + """ + goalLevelTestProgressInfo: AnswerRelatedGoalLevelTestProgressInfo +} + +"""""" +type SaveJournalFinalStudentMark { + """""" + periodMark: JournalFinalStudentMark + + """""" + yearMark: JournalFinalStudentMark +} + +"""""" +type SaveJournalStudentMarkResponse { + """""" + mark: JournalStudentMark! + + """""" + changedFinalMark: JournalFinalStudentMark +} + +"""Результат сохранения настройки""" +type SaveSchoolConfigurationResponse { + """Данные о сохраненной настройке""" + data: SchoolSelfConfigurationProperty + + """Признак успешности выполнения запроса""" + isSuccess: Boolean! + + """Описание ошибки, возникшей в ходе выполнения запроса""" + error: SchoolSelfConfigurationError +} + +"""Входная модель сохранения значения настройки для школы""" +input SaveSchoolSelfConfigurationPropertyValueInput { + """Код настройки""" + propertyCode: String! + + """Значение настройки""" + value: String! +} + +"""Информация о выполненной мутации""" +type SaveStudentAnswerResponse { + """Полная информация по Заданию в контексте Студента""" + studentTaskInfo: StudentTaskInfo! + + """ + Информация о текущем состоянии связанной с Заданием Персональной Цели (если есть) + """ + personalObjectiveProgressInfo: PersonalObjectiveProgressInfo + + """ + информация о прогрессе уроков, в которые входит задание, на которое был отправлен ответ + """ + lessonProgressInfos: [StudentLessonProgressInfo] + + """ + Информация о текущем состоянии Домашней Работы, с которой связан данный ответ на Задание (если ответ был отправлен в рамках некоторой Домашней Работы) + """ + homeworkProgressInfo: AnswerRelatedHomeworkProgressInfo + + """ + Информация о текущем состоянии Закрывающего теста, + с которым связан данный ответ на Задание (если ответ был отправлен в рамках некоторого закрывающего теста) + """ + goalLevelTestProgressInfo: AnswerRelatedGoalLevelTestProgressInfo +} + +"""""" +type SaveStudentGoalLevelTestAnswerResponse { + """""" + widgets: [GoalLevelTestAttemptTaskWidget!] + + """""" + attemptOldTask: GoalLevelTestAttemptOldTask + + """""" + attemptStatus: StudentGoalLevelTestAttemptStatus! + + """""" + testStatus: StudentGoalLevelTestStatus! + + """""" + taskStatus: TaskStatusEnum! +} + +""" +Данные для создания предупреждений при переводе учеников между группами по предметам +""" +type SaveSubjectGroupStudentsMessage { + """""" + studentFullName: String! + + """""" + stageGroupName: String! + + """""" + stageSubjectGroupName: String! +} + +"""Использование Сберкласс""" +type SberClassUsage { + """""" + schoolCount: Int! + + """""" + totalPmoCount: Int! + + """""" + totalPmoCountPercent: Int! + + """""" + activePmoCount: Int! + + """""" + activePmoCountPercent: Int! + + """""" + totalEduCount: Int! + + """""" + totalEduCountPercent: Int! + + """""" + activeEduCount: Int! + + """""" + activeEduCountPercent: Int! + + """""" + totalCount: Int! + + """""" + totalCountPercent: Int! + + """""" + activeCount: Int! + + """""" + activeCountPercent: Int! +} + +"""Расписание""" +type Schedule { + """Идентификатор расписания""" + id: ID! + + """События в рассписании""" + events: [Event!]! + + """Дата и время начала периода расписания""" + from: DateTime! + + """Дата и время окончания периода расписания""" + to: DateTime! + + """""" + total: Float! + + """Персональные Контрольные Работы, назначенные на диапазон дат""" + personalControlWorks: [PersonalControlWork!]! + + """ + Классные Контрольные Работы, назначенные на диапазон дат; используются учителем + """ + classSubjectControlWorks: [ClassSubjectControlWork!]! + + """ + Индикатор наличия загруженного расписания для данной школы и учебного года + """ + eventsUploaded: Boolean! +} + +"""Ограничение планировщика""" +type ScheduleConstraint { + """код правила""" + id: String! + + """название правила""" + name: String! + + """дефолтное значение веса штрафа""" + defaultPenaltyValue: Int! +} + +"""Ограничение планировщика""" +input ScheduleConstraintInput { + """код правила""" + id: String! + + """дефолтное значение веса штрафа""" + weight: Int! +} + +"""""" +enum ScheduleCron { + """Каждый день""" + EVERY_DAY + + """Каждую неделю""" + EVERY_WEEK + + """Каждый месяц""" + EVERY_MONTH + + """Каждый квартал""" + EVERY_QUARTER + + """Каждый календарный год""" + EVERY_YEAR + + """Каждый учебный год""" + EVERY_ACADEMIC_YEAR +} + +"""""" +type ScheduleEventsVisitJournalInfo { + """Идентификатор события(timetableId)""" + id: ID! + + """Дата и время начала события""" + start: DateTime! + + """Дата и время завершения события""" + end: DateTime! + + """Предмет (пример: Биология)""" + subjectId: ID! + + """Отметка о посещении Учеником события""" + visitJournalValue: VisitJournalCellValueEnum + + """ИД модуля к которому относится событие(урок)""" + goalId: ID +} + +"""""" +type ScheduleEventsVisitJournalInfoResponse { + """""" + eventInfo: [ScheduleEventsVisitJournalInfo!]! +} + +"""""" +type ScheduledStudentTask { + """""" + deadline: DateTime! + + """""" + goalName: String! + + """""" + subjectName: String! + + """""" + taskName: String! + + """""" + taskId: Int! + + """""" + goalId: Int! +} + +"""""" +type School { + """""" + id: ID! + + """""" + fullName: String! + + """""" + shortName: String! + + """""" + address: String! + + """Активные БА школы V1""" + businessAdmins: [UserNameView!] @deprecated(reason: "use businessAdminsV2 field") + + """Активные БА школы V2""" + businessAdminsV2: [BusinessAdminView!] + + """Draft-пользователи с бизнес-ролью БА, которых пригласили на платформу""" + businessAdminUserDrafts: [UserDraft!]! + + """ + Draft-пользователи с бизнес-ролью STUDENT, которых пригласили на платформу + """ + studentUserDrafts: [UserDraft!] + + """""" + active: Boolean! + + """""" + logo: String + + """""" + studyStepSubjects: [StudyStepSubject!]! + + """""" + individualPlan: Boolean + + """""" + timeZoneId: String! + + """""" + identifier: String! + + """""" + region: Region! + + """""" + organizationType: String! + + """Теги""" + tags: [String!]! + + """ИНН""" + inn: String + + """ + Статус заполнения обязательных данных для начала учебного процесса (здания, кабинеты, звонки, ученики, учителя, классы) + """ + isMandatoryDataFilled: Boolean! + + """Конфигурация чтения / записи""" + tenantConfiguration: TenantConfiguration! +} + +"""""" +type School21Mutations { + """S21. Удаление свободного времени для проверки""" + deleteEvent(eventId: ID!): Boolean! + + """ + Сохранение дефолтных значений дополнительных атрибутов задания при его создании (когда заполнено только поле "Название задания") + """ + saveTaskAdditionalAttributesDefaultValues(taskId: ID!): CheckSequenceSettings! + + """S21. Сохранить настройки страниц экзаменационного теста""" + saveSettingsExamTestPages(settingsExamTestPages: SettingsExamTestPagesInput!): [SettingsExamTestPageModel!]! + + """Пометить указанные заявки на расформирование команд, как прочитанные""" + markingReadTeamDisbandRequests(teamDisbandRequestIds: [Int!]!): Boolean! + + """Модератор одобряет заявку на расформирование команды""" + acceptTeamDisbandRequest(teamDisbandRequestId: ID!): DisbandRequestStatus! + + """Модератор отклоняет заявку на расформирование команды""" + rejectTeamDisbandRequest(teamDisbandRequestId: ID!): DisbandRequestStatus! + + """Создание виджета ASAP""" + createAsapWidget(input: AsapWidgetInput!): AsapWidgetInfo! + + """Редактирование виджета ASAP""" + updateAsapWidget(widgetId: ID, input: AsapWidgetInput!): AsapWidgetInfo! + + """S21. Перевод студентов из класса в класс""" + transferStudentsToNewStageGroup(oldStageGroupId: ID!, newStageGroupId: ID!, studentIds: [UUID!]!, stageSubjectGroupIds: [ID!]): TransferResult! + + """ + S21. Принудительное создание приватного репозитория экзаменационного задания + """ + forcedCreateExamPrivateGitlabProject(examEventId: ID!, taskId: ID!, studentId: UUID!, gitlabUserAccessLevel: GitlabUserAccessLevel!): Boolean! + + """ + S21. Принудительная синхронизация командных настроек для групповых проектов в аланах на параллель, класс и в локальных курсах + """ + forcedTeamSettingsSynchronization(learningEntityGroupType: LearningEntityGroupType): Boolean! + + """ + S21. Ручное изменение результата прохождения экзамена по указанной попытке + """ + manualChangeExamResult( + """Идентификатор студенческого экзаменационного проекта""" + studentGoalId: ID! + + """Новый процент прохождения по попытке""" + finalPercentage: Int! + + """Идентификатор попытки, по которой будет происходить пересчет""" + studentGoalAttemptId: ID + ): Boolean! + + """S21. Сохранить дату и время завершения обучения в классе""" + saveStageGroupFinishDate(stageGroupId: ID!, finishDate: DateTime): StageGroupFinishDate! + + """Видеозапись онлайн-проверки не подтверждена""" + markFilePending(filledChecklistId: ID!, fileName: String!, relativePath: String!): OnlineReviewVideo! + + """Видеозапись онлайн-проверки загружена""" + markP2pCheckVideoUploaded(filledChecklistId: ID!, onlineReviewId: ID!, videoSize: Int!): OnlineReviewVideo! + + """Ошибка загрузки видеозаписи онлайн-проверки""" + markP2pCheckVideoFailedToUpload(filledChecklistId: ID!, onlineReviewId: ID!, errorMessage: String!): OnlineReviewVideo! + + """Пользователь отменил загрузку видео""" + markP2pCheckVideoUploadCancelled(filledChecklistId: ID!, onlineReviewId: ID!): OnlineReviewVideo! + + """Добавление ссылки с онлайн проверкой для уже заполненного чек-листа""" + updateFilledChecklistWithOnlineReview(filledChecklistId: ID!, onlineReviewId: ID!): FilledChecklist! + + """ + Кидает ивенты о необходимости блокировки студентов определенной группы по предмету и отмену их штрафов + """ + blockUsersOfStageSubjectGroup(stageSubjectGroupId: ID!): Boolean! @deprecated(reason: "Will be deleted later") + + """Отчислить студентов с основы""" + expelStudents(students: [UUID!]!): ExpelResult + + """""" + expelStudent(student: UUID!): ExpelResult! + + """Восстановить студентов""" + reinstateStudents(reinstateStudents: [ReinstateStudentInput!]!): ExpelResult + + """""" + reinstateStudent(reinstateStudent: ReinstateStudentInput!): ExpelResult! + + """Заморозить студентов""" + freezeStudents(students: [UUID!]!): ExpelResult + + """""" + freezeStudent(student: UUID!): ExpelResult! + + """Разморозить студентов""" + unfreezeStudents(students: [UUID!]!): ExpelResult + + """Заблокировать пользователя""" + blockUser(userId: UUID!): Boolean! + + """Разблокировать пользователя""" + unblockUser(userId: UUID!): Boolean! + + """сохранение настроек ультикампусности для школы (вкл/выкл)""" + saveMulticampusSchoolStatus(schoolId: UUID!, isActive: Boolean!): Boolean + + """сохранение связей между кампусами для выбранной параллели""" + saveMulticampusSchoolStageDependencies(schoolId: UUID!, stageId: ID!, schoolIds: [UUID!]!): Boolean + + """очистка всех сохраненных связей для кампуса и его активация""" + clearMulticampusSchoolStageDependencies(schoolId: UUID!): Boolean @deprecated(reason: "использовать clearMulticampusSchoolStageDependenciesAndActivate") + + """очистка всех сохраненных связей для кампуса и его активация""" + clearMulticampusSchoolStageDependenciesAndActivate(schoolId: UUID!): Boolean +} + +"""""" +type School21Queries { + """ + S21. Публичный профиль студента. Получение рабочей станции за которой авторизован студент по идентификатору студента + """ + getWorkstationByUserId(userId: UUID): WorkstationModel + + """ + S21. Публичный профиль студента. Получение всех волн (аналог stage_group_name) и форм обучения (аналог stage_name) по StudentId + """ + getStageGroupsS21PublicProfile(studentId: UUID!): [StageGroupS21] + + """ + S21. Публичный профиль студента. Получение списка завершенных проектов с датами завершения + """ + getFinishedGoalsPublicProfile(studentId: UUID!): [GoalFinished!]! + + """ + S21. Публичный профиль студента. Получение всех доступных достижений пользователя, включая не полученные + """ + getBadgesWithFakePublicProfile(userId: UUID): [UserBadgeAward!]! + + """ + S21. Публичный профиль студента. Возращает здания с кабинетами. Для текущего студента, если schoolId не передан + """ + getBuildingsBySchoolId(schoolId: UUID): [Building!]! + + """S21. Публичный профиль студента. Получение коалиции по UserId""" + getCoalitionPublicProfile(userId: UUID!): CoalitionMember + + """ + S21. Публичный профиль студента. Получение UserId по Login пользователя + """ + getUserIdByLogin(login: String!): UUID + + """ + S21. Публичный профиль студента. Получение StudentId по Login пользователя, если нет studetnId - EMPTY_UUID + """ + getStudentIdByLogin(login: String!): UUID @deprecated(reason: "использовать getStudentByLogin") + + """ + S21. Публичный профиль студента. Получение SchoolId по Login пользователя, если нет schoolId - EMPTY_UUID + """ + getSchoolIdByLogin(login: String!): UUID @deprecated(reason: "использовать getStudentByLogin") + + """S21. Публичный профиль студента. Получение ссылки на автар по UserId""" + getAvatarByUserId(userId: UUID!): String + + """ + S21. Публичный профиль студента. Получение волны (аналог stage_group_name) и формы обучения (аналог stage_name) по StudentId + """ + getStageGroupS21PublicProfile(studentId: UUID!): StageGroupS21 + + """S21. Публичный профиль студента. Получение опыта по UserId""" + getExperiencePublicProfile(userId: UUID!): UserExperience + + """S21. Публичный профиль студента. Получение email по UserId""" + getEmailbyUserId(userId: UUID!): String + + """ + S21. Публичный профиль студента. Получение класса в котором авторизован студент по его логину + """ + getClassRoomByLogin(login: String!): ClassRoom + + """ + S21. Публичный профиль студента. Получение достижений для публичного профиля + """ + getBadgesPublicProfile(userId: UUID!): [UserBadgeAward!]! + + """ + S21. Публичный профиль студента. Получение навыков для публичного профиля + """ + getSoftSkillsByStudentId(studentId: UUID!): [SoftSkillPower!]! + + """ + S21. Публичный профиль студента. Информация об отчисленном/завершившем обучение студенте + Может быть null, если студент не отчислен + """ + getDismissInfoByStudentId(studentId: UUID!): StudentDismissInfo + + """S21. Поиск одноклассников студента по параллели""" + getStageClassmates(textSearch: String): [User!]! + + """S21. Возвращает все существующие планы на параллель""" + getS21StagePlans(schoolId: UUID): [S21StagePlan!]! + + """S21. Возвращает план на параллель по идентификатору""" + getS21StagePlan(stagePlanId: ID!): S21StagePlan! + + """ + S21. Возвращает план на параллель по идентификатору c групповыми проектами + """ + getS21StageGroupPlan(stagePlanId: ID!, schoolId: UUID): S21StagePlan! + + """ + S21. Возвращает текущие Группы по Предмету Учителя по идентификатору Предмета и идентифкатору параллели + """ + getClassSubjectsBySubjectIdAndStageId(subjectId: ID!, stageId: ID!, schoolId: UUID): [ClassSubject!]! + + """""" + getStudentByLogin(login: String!): StudentAttributes + + """ + S21. Публичный профиль студента. Получение максимального значения софт-скилов + """ + getSoftSkillLimitByStudentId(studentId: UUID!): SoftSkillLimit! + + """S21. Получение профилей студента по идентификаторам пользователя""" + getUsers(userIds: [UUID!]!): [S21StudentPublicProfileBasicInfo!] + + """Получение пользователей, исключенных из определенной параллели""" + getDismissedStudentsFromStage(sortingFields: [SortingField], paging: PagingInput, textSearch: String, stageId: ID!): [User]! + + """ + Получение количества пользователей, исключенных из определенной параллели + """ + getDismissedStudentsFromStageCount(textSearch: String, stageId: ID!): Int! + + """S21. Запрос отчета по успеваемости студентов""" + loadStudentsAcademicPerformanceS21Report(stageSubjectGroupId: Int!, startDate: Date!, endDate: Date!, timeZone: String, schoolId: UUID): ReportExcelFile! + + """S21. Запрос отчета по времени выполнения проектов""" + loadProjectExecutionTimeS21Report(stageId: ID!, stageSubjectGroupId: ID, goalId: ID, timeZone: String, schoolId: UUID): ReportExcelFile! + + """""" + loadProjectProgressReport(goalId: ID!, timeZone: String): ReportExcelFile! @deprecated(reason: "использовать loadProjectProgressReportV2") + + """S21. Запрос отчета по прогрессу за проект в Ш21""" + loadProjectProgressReportV2(goalId: ID!, startDate: Date!, endDate: Date!, stageId: ID!, stageGroupId: ID, timeZone: String, schoolId: UUID): ReportExcelFile! + + """S21. Запрос отчета по статистике PRP/CRP студентов""" + loadRpBalanceReport(stageId: ID!, stageSubjectGroupId: ID, rpReportType: RpReportTypeEnum!, startDate: Date!, endDate: Date!, timeZone: String, schoolId: UUID): ReportExcelFile! + + """S21. Запрос отчета по командам""" + loadStudentsTeamS21Report(stageId: ID!, stageSubjectGroupId: ID, goalId: ID, timeZone: String, schoolId: UUID): ReportExcelFile! + + """S21. Получение отчета по проведенным мероприятиям""" + getEventsReport(from: DateTime!, to: DateTime!, eventCodes: [String!]!, timeZone: String, schoolId: UUID): ReportExcelFile! + + """S21. Запрос отчета по успеваемости абитуриентов""" + loadStudentsPerformanceS21Report(stageSubjectGroupId: Int!, timeZone: String, schoolId: UUID): ReportExcelFile! + + """S21. Запрос консистентности проекта""" + loadGoalConsistencyInfo(goalId: ID!): GoalConsistency! + + """S21. Запрос консистентности курса""" + loadCourseConsistencyInfo(localCourseId: ID!): CourseConsistency! + + """S21. Запрос консистентности глобального курса""" + loadGlobalCourseConsistencyInfo(courseId: ID!): CourseConsistency! + + """S21. Запрос консистентности нескольких глобальных курсов""" + loadAllGlobalCoursesConsistencyInfos(courseIds: [ID!]!): [CourseConsistency!]! + + """S21. Сравнение плана на параллель с глобальным планом""" + compareStagePlanAndGlobalPlan(stagePlanId: ID!): Boolean! + + """S21. Сравнение плана на класс с планом на параллель""" + compareClassPlanAndStagePlan(classPlanId: ID!): Boolean! + + """S21. Сравнение локального курса с глобальным курсом""" + compareLocalCourseAndGlobalCourse(localCourseId: ID!): Boolean! + + """ + S21. Сравнение локального курса с глобальным курсом, по модулям и конструкторам + """ + compareLocalCourseAndGlobalCourseAndConstructors(localCourseId: ID!): LocalCourseCompareGlobalCourseResult! + + """ + S21. Публичный профиль студента. Получение персонализированного учебного модуля + """ + getModuleById(goalId: ID!, studentId: UUID!): StudentModule! + + """S21. Публичный профиль студента. получение названия проекта""" + getGoalTitleById(goalId: ID!): String! + + """ + S21. Публичный профиль студента. Получение полной информации на странице проекта + """ + getModuleCoverInformation(goalId: ID!, studentId: UUID!): ModuleCoverInformation + + """ + S21. Публичный профиль студента. Получение информации о проверках по проекту + """ + getProjectAttemptEvaluationsInfo(goalId: ID!, studentId: UUID!): [ProjectAttemptEvaluationsInfo!]! + + """ + S21. Публичный профиль студента. Получение информации о проверках по проекту + """ + getProjectAttemptEvaluationsInfo_V1(goalId: ID!, studentId: UUID!): [ProjectAttemptEvaluationsInfo_V1!]! + + """ + S21. Публичный профиль студента. Получение информации по проверкам проекта + """ + getP2PChecksInfo(goalId: ID!, studentId: UUID!): P2PChecksInfo + + """ + S21. Публичный профиль студента. Получение информации по ретраям проекта + """ + getGoalRetryInfo(goalId: ID!, studentId: UUID!): StudentGoalRetryInfo! + + """ + Получение команды, в которой состоит пользователь, выполняющий групповой проект + """ + getProjectTeamWithMembers(goalId: ID!, studentId: UUID!): ProjectTeamWithMembers + + """S21. получение активных ограничений студента""" + getUserRestrictions: [UserRestriction]! + + """S21. получение активных ограничений пользователя по userId""" + getUserRestrictionsByUserIdAndSchoolId(userId: UUID!, schoolId: UUID!): [UserRestriction]! + + """ + S21. Публичный профиль студента. Получение всех проектов для публичного профиля по userId и stageGroupId + """ + getStudentProjectsForPublicProfileByStageGroup(studentId: UUID!, stageGroupId: ID!): [StudentItem]! + + """получение информации по средней посещаемости за неделю/месяц""" + loadAverageLogtime(login: String!, schoolID: UUID!, date: Date!): AverageLogtime! + + """ + S21. Публичный профиль студента. Получение всех волн (аналог stage_group_name) и форм обучения (аналог stage_name) по userId и schoolId + """ + loadStudentStageGroupsS21PublicProfile(userId: UUID!, schoolId: UUID!): [StageGroupS21Student] + + """ + S21. Публичный профиль студента. Получение всех волн (аналог stage_group_name) и форм обучения (аналог stage_name) по StudentId + """ + loadStudentStageGroups(studentId: UUID!): [StageGroupS21Student] + + """""" + getCourseGoalsExperience(courseId: ID!, courseGoalWeights: [CourseGoalWeightInput!]!): [CourseGoalExperience!]! + + """S21. Получить настройки страниц экзаменационного теста""" + getSettingsExamTestPages(taskId: ID!): [SettingsExamTestPageModel!]! + + """ + S21.Подсчитывает показатели настроек (опыт, вес) страниц экзаменационного теста + """ + calcIndicatorsSettingExamTestPage(settingsExamTestPages: SettingsExamTestPagesInput!): [IndicatorsSettingExamTestPageModel!]! + + """ + S21. Получить список всех студентов школы, которой принадлежит бизнес-админ + """ + getSchoolStudents: [StudentWithLoginModel!]! + + """ + S21. Получить список всех групповых и индивидуальных проектов студента со статусами и датами получения статусов + """ + getStudentProjects(studentId: UUID!): [StudentProjectForBA!]! + + """S21. Получить список доступных статусов проекта""" + getProjectStatuses: [StudentProjectStatus!]! + + """Получение информации о настройках распродаж по всем школам""" + getAllSaleSettings: [RpSaleSetting!]! + + """Получение информации о настройках распродаж в конкретной школе""" + getSaleSettingsBySchoolId(schoolId: ID!): [RpSaleSetting!]! + + """Получить текущий процент прогресса распродаж""" + getSaleProgressPercentages: [RpSaleProgress]! + + """Получение списка типов мероприятий""" + getActivityTypes: [ActivityType!]! + + """ + S21. Получить список заявок на расформирование команд на рассмотрении у пользователя + """ + getS21CurrentTeamDisbandRequests: [CurrentTeamDisbandRequestInfo!]! + + """S21. Получить список обработанных заявок на расформирование команд""" + getS21ProcessedTeamDisbandRequests: [ProcessedTeamDisbandRequestInfo!]! + + """S21. Получить список участников команды""" + getS21TeamMembersByTeam(teamId: UUID!): [TeamMember!]! + + """ + S21. Получить список комментариев к личным заявкам участников на расформирование команды + """ + getUserDisbandRequestComments(teamDisbandRequestId: ID!): [UserDisbandRequestComment!]! + + """S21. Получить число необработанных модератором команд запросов""" + getS21RequestsCountForTeamModerator: Int! + + """S21. Хлебные крошки в админке""" + getBreadCrumbs(itemId: ID!, planType: PlanTypeForCondition!, planItemType: PlanItemType!): BreadCrumbsPlanItem + + """S21. Виджеты ASAP для редактирования""" + getAllAsapWidgets: AsapWidgetInfoList! + + """S21. Получить общую статистику по слотам студента""" + getCommonP2pStatistic(startDate: Date!, endDate: Date!, userId: UUID!): P2pCommonStatistic! + + """ + Возвращает список всех активных кампусов (уровень EDUCATIONAL_INSTITUTION(3000)) в пределах Школы 21. + """ + getActiveS21Campuses: [SafeSchool!]! + + """Возвращает список навыков""" + getSoftSkillTypes( + """Фильтр навыков: null - все, false - активные, true - архивные""" + isArchive: Boolean + + """Параметры сортировки""" + sortingFields: [SortingField] + ): [SoftSkillType!]! + + """S21. Получить данные для тепловой карты по статистике событий студента""" + getHeatMapEventsStudentStatistic( + """Дата начала периода""" + startDate: Date! + + """Дата окончания периода""" + endDate: Date! + + """Идентификатор пользователя""" + userId: UUID! + + """Идентификатор школы""" + schoolId: UUID + ): P2pHeatMapWithMedian! + + """ + S21. Получить данные для тепловой карты по статистике таймслотов студентов школы + """ + getHeatMapCampusCalendarTimeSlot(startDate: Date!, endDate: Date!, schoolId: UUID): P2pHeatMapWithMean! + + """ + S21. получение ссылки на приватный студенческий Gitlab проект по логину студента и идентификатору задачи + """ + getLinkToPrivateStudentGitlabProjectByStudentLoginAndTaskId(login: String!, taskId: ID!): GitlabLink! + + """S21. Запрос на получение условий выполнения проекта для студента""" + loadStudentProjectExecutionConditions(login: String!, goalId: ID!): [StudentEvaluationRuleGroup!]! + + """S21. Получение финального результата за проект""" + getStudentGoalFinalScoreByLoginAndGoalId(login: String!, goalId: ID!): StudentGoalFinalScore! + + """S21. Получить статистику по алгоритму выбора проверяющего""" + getStatisticBookingAttempt(start: DateTime!, end: DateTime!, userId: UUID!): [BookingAttemptStatistic!]! + + """S21. Получить список попыток записей проверяемых по конкретному этапу""" + getBookingAttemptVerifiableByStage( + """Дата начала периода""" + start: DateTime! + + """Дата окончания периода""" + end: DateTime! + + """Идентификатор пользователя""" + userId: UUID! + + """Этап отбора""" + stageEnum: SelectionStageEnum! + + """Параметры пагинации""" + paging: PagingInput + ): [BookingAttemptVerifiable!]! + + """S21. Получить кандидатов на место проверяющих по записи""" + getBookingAttemptsVerifier(bookingId: Int!): [BookingAttemptVerifier!]! + + """S21. Сделать валидацию названия задания в Gitlab""" + checkIfLegalTaskNameToCreateGitlabProject(taskName: String!): Boolean! + + """S21. Получить список классов школы 21 по фильтрам Кампус/Параллель""" + getStageGroups(schoolIds: [UUID], stageIds: [ID], textSearch: String): [StageGroup] + + """ + S21. Получить список классов школы 21 по фильтрам Кампус/Параллель с дополнительными ограничениями по полномочиям текущего пользователя + """ + getStageGroupsRestricted(schoolIds: [UUID], stageIds: [ID], textSearch: String, isIntergroup: Boolean): [StageGroup] + + """S21. Получить задание для студента по проекту""" + getTasksById( + """id проекта, для которого необходимо отобразить задание""" + goalId: ID! + + """id локального курса, в котором находится проект""" + localCourseId: ID + + """id задания""" + taskId: ID! + ): [StudentTask!]! + + """Получение дедлайнов по фильтрам""" + getDeadlinesForStudents( + """Текстовый фильтр по ФИО и логину пользователей""" + textSearch: String + + """Фильтр - является ли этот дедлайн ближайшим""" + isClosest: Boolean! + + """Фильтр по статусам дедлайнов""" + deadlineStatuses: [DeadlineStatus!]! + + """Идентификаторы группы (класса)""" + stageGroupIds: [ID] + + """Фильтр по дате создания дедлайна после указанного времени""" + createdFrom: DateTime + + """Фильтр по дате создания дедлайна до указанного времени""" + createdTo: DateTime + + """Фильтр по дате дедлайна после указанного времени""" + deadlineFrom: DateTime + + """Фильтр по дате дедлайна до указанного времени""" + deadlineTo: DateTime + + """Поля для сортировки""" + sorting: [SortingField] + + """Пагинация""" + page: PagingInput! + ): [DeadlineStudentInfo]! + + """Получение количество дедлайнов по фильтрам""" + getDeadlinesForStudentsCount( + """Текстовый фильтр по ФИО и логину пользователей""" + textSearch: String + + """Фильтр - является ли этот дедлайн ближайшим""" + isClosest: Boolean! + + """Фильтр по статусам дедлайнов""" + deadlineStatuses: [DeadlineStatus!]! + + """Идентификаторы группы (класса)""" + stageGroupIds: [ID] + + """Фильтр по дате создания дедлайна после указанного времени""" + createdFrom: DateTime + + """Фильтр по дате создания дедлайна до указанного времени""" + createdTo: DateTime + + """Фильтр по дате дедлайна после указанного времени""" + deadlineFrom: DateTime + + """Фильтр по дате дедлайна до указанного времени""" + deadlineTo: DateTime + ): Int! + + """В плане на класс есть проекты с дедлайнами""" + getS21ClassPlanHasDeadline(classPlanId: ID!): Boolean! + + """получение настроек мультикампусности""" + getMulticampusSettings( + """список параллелей для фильтра (или null - для всех)""" + stageId: ID + ): [MulticampusSetting!]! + + """ + S21. Получить настройки для шторки с настройками восстановления мультикампусности для определенной школы + """ + getMulticampusSettingsForRecovery( + """ID школы""" + schoolId: UUID! + ): [StageMulticampusSettingForRecovery!]! + + """Получение публичного профиля пользователя по userID""" + getBasePublicProfile(userId: UUID!): BasePublicProfile! +} + +"""""" +type SchoolAdditionalInformation { + """ID школы""" + schoolId: UUID! + + """Количество групп по предмету в школе""" + classSubjectCount: Int! + + """ID группы класса по предмету, если classSubjectCount = 1""" + classSubjectId: ID +} + +"""""" +type SchoolChannels { + """""" + schoolId: ID! + + """""" + channels: [Channel!]! +} + +"""""" +input SchoolChannelsInput { + """""" + schoolId: ID! + + """Каналы, которые должны быть включены/отключены""" + channels: [ChannelInput]! +} + +"""Информация о кампусах""" +type SchoolDependency { + """id кампуса""" + schoolId: UUID! + + """имя кампуса""" + schoolName: String! +} + +"""Школа для добавления в программу""" +type SchoolForLearningProgram { + """id школы""" + schoolId: UUID! + + """ + идентификатор школы, например "00-00055" + """ + schoolIdentifier: String! + + """краткое наименование школы""" + schoolName: String! + + """идентификатор региона школы""" + regionId: UUID! + + """наименование региона школы""" + regionName: String! + + """информация об учебной программе""" + learningProgramInfo: LearningProgramInfo +} + +"""""" +input SchoolFunctionalRoleInput { + """""" + roleName: String! + + """""" + schoolId: ID +} + +"""Информация по школе для дашборда регминистра""" +type SchoolInfo { + """""" + schoolId: UUID! + + """""" + schoolName: String! + + """""" + schoolFullName: String! + + """""" + address: String! + + """""" + regionId: UUID! + + """""" + regionName: String! + + """""" + organizationType: String! + + """Теги""" + tags: [Int!]! +} + +""" +Cтатус заполнения обязательных данных для школы для начала учебного процесса (здания, кабинеты, звонки, ученики, учителя, классы) +""" +type SchoolMandatoryData { + """Здания и кабинеты""" + buildingsAndClasses: Boolean! + + """Учебные периоды""" + studyPeriods: Boolean! + + """Расписание звонков""" + lessonTimeSlots: Boolean! + + """Ученики""" + students: Boolean! + + """Учителя""" + teachers: Boolean! + + """Классы""" + stages: Boolean! + + """Предметные группы""" + stageSubjectGroups: Boolean! +} + +"""Государственная оценка за контрольное тестирование""" +type SchoolMark { + """Идентификатор оценки""" + id: ID! + + """Численное значение оценки""" + governmentMark: Int! + + """Название оценки""" + customName: String! + + """ + Признак того, меняет ли отметка статус задания на зачтено или на не зачтено + """ + isAccepted: Boolean! + + """Сокращенное название оценки""" + abbreviation: String + + """ + Название пиктограммы, которая будет использована для отображения данной оценки + """ + iconName: String + + """Дополнительное описание оценки (Полное название оценки)""" + description: String + + """ + Горячая клавиша клавиатуры, ассоциированная с оценкой + https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode + Например, "Digit1", "KeyS" + """ + hotkey: String +} + +"""Группа системы оценивания""" +type SchoolMarkTypeGroup { + """""" + id: ID! + + """Наименование группы систем оценивания""" + name: String! + + """Идентификатор школы""" + schoolId: UUID! + + """Система оценивания""" + governmentMarkType: GovernmentMarkType! + + """Идентификатор учебного года начала действия группы системы оценивания""" + startAcademicYear: AcademicYear! + + """ + Идентификатор учебного года окончания действия группы системы оценивания + """ + endAcademicYear: AcademicYear + + """Параллели""" + stages: [Stage!]! +} + +"""""" +type SchoolMarkTypeGroupConfiguration { + """Идентификатор конфигурации оценивания""" + id: ID! + + """Группа системы оценивания""" + schoolMarkTypeGroup: SchoolMarkTypeGroup! + + """Доступна ли ручная корректировка отметок за учебный период""" + isManualChangeAvailable: Boolean! + + """Зависит ли оценивание от отметки за модуль""" + dependOfGoalMark: Boolean! + + """Процентная зависимость отметки за период от внешней контрольной работы""" + markDependencyOfExternalWork: Float + + """Параллели конфигурации оценивания""" + stages: [Stage!]! + + """Соответствия процента завершения плана получаемой отметке""" + schoolMarkTypeGroupConfigurationRelation: [SchoolMarkTypeGroupConfigurationRelation!]! + + """Дата и время создания конфигурации""" + createTime: DateTime! + + """Дата и время последнего изменения данных конфигурации""" + updateTime: DateTime +} + +"""""" +input SchoolMarkTypeGroupConfigurationInput { + """Идентификатор конфигурации оценивания""" + id: ID + + """Группа системы оценивания""" + schoolMarkTypeGroup: SchoolMarkTypeGroupInput! + + """Доступна ли ручная корректировка отметок за учебный период""" + isManualChangeAvailable: Boolean! + + """Зависит ли оценивание от отметки за модуль""" + dependOfGoalMark: Boolean! + + """Процентная зависимость отметки за период от внешней контрольной работы""" + markDependencyOfExternalWork: Float + + """Параллели конфигурации оценивания""" + stages: [ID!]! + + """Соответствия процента завершения плана получаемой отметке""" + schoolMarkTypeGroupConfigurationRelation: [SchoolMarkTypeGroupConfigurationRelationInput!]! + + """Дата и время создания конфигурации""" + createTime: DateTime! + + """Дата и время последнего изменения данных конфигурации""" + updateTime: DateTime +} + +"""""" +type SchoolMarkTypeGroupConfigurationRelation { + """ + Идентификатор конфигурации оценивания в которой учитывается отношение % завершения плана к получаемой отметке + """ + id: ID! + + """Идентификатор конфигурации оценивания""" + schoolMarkTypeGroupConfigurationId: ID! + + """ + Минимальное требуемое количество процентов прохождения плана для получения отметки + """ + planCompletingPercentCount: Float! + + """Идентификатор получаемой оценки""" + governmentMark: SchoolMark! + + """Время последнего изменения""" + updateTs: DateTime! +} + +"""""" +input SchoolMarkTypeGroupConfigurationRelationInput { + """ + Идентификатор конфигурации оценивания в которой учитывается отношение % завершения плана к получаемой отметке + """ + id: ID + + """Идентификатор конфигурации оценивания""" + schoolMarkTypeGroupConfigurationId: ID! + + """ + Минимальное требуемое количество процентов прохождения плана для получения отметки + """ + planCompletingPercentCount: Float! + + """Идентификатор получаемой оценки""" + governmentMarkId: ID! +} + +"""""" +input SchoolMarkTypeGroupInput { + """""" + id: ID! + + """""" + name: String! + + """""" + schoolId: UUID! + + """""" + governmentMarkTypeId: ID! + + """""" + startAcademicYearId: ID! + + """""" + endAcademicYearId: ID + + """""" + stageIds: [ID!]! +} + +"""""" +type SchoolMonitoring { + """""" + orderNumber: Int! + + """""" + metricName: String! + + """""" + isHeader: Boolean! + + """""" + entries: [SchoolMonitoringEntry!] +} + +"""""" +type SchoolMonitoringEntry { + """""" + date: Date! + + """""" + value: String! +} + +"""""" +input SchoolMonitoringInput { + """""" + schoolId: UUID! + + """""" + startDate: Date! + + """""" + endDate: Date! +} + +"""""" +type SchoolReportPeriods { + """""" + reportPeriodSetId: UUID! + + """""" + stageIds: [ID!]! + + """""" + reportPeriods: [ReportPeriod!]! +} + +"""""" +input SchoolReportPeriodsInput { + """""" + reportPeriodSetId: UUID + + """""" + stageIds: [ID!]! + + """""" + reportPeriods: [ReportPeriodInput!]! +} + +"""Модель ошибки настроек школы""" +type SchoolSelfConfigurationError { + """Код ошибки""" + errorCode: SchoolSelfConfigurationErrorCode! +} + +"""Коды ошибок настроек школ""" +enum SchoolSelfConfigurationErrorCode { + """""" + ACCESS_TO_SCHOOL_CONFIGURATION_SECTION_IS_NOT_ALLOWED +} + +"""""" +type SchoolSelfConfigurationMutations { + """Мутация на изменение значения настройки для контекстной школы""" + saveConfiguration(saveSchoolConfigurationPropertyValueInput: SaveSchoolSelfConfigurationPropertyValueInput!): SaveSchoolConfigurationResponse! +} + +"""Настройка, входящая в подраздел""" +type SchoolSelfConfigurationProperty { + """Идентификатор настройки""" + configurationSubsectionPropertyId: ID! + + """Код настройки""" + propertyCode: String! + + """Имя настройки""" + propertyName: String! + + """Комментарий к настройке""" + propertyComment: String + + """Тип визуального элемента для управления настройкой""" + propertyInputType: ConfigurationPropertyInputType! + + """Порядковый номер настройки в рамках подраздела и организации""" + sequenceNumber: Int! + + """ + Модель параметра системы, связанного с настройкой по propertyCode. + Содержит значение настройки для контекстной школы и метаинформацию + """ + relatedConfiguration: Configuration! +} + +"""""" +type SchoolSelfConfigurationQueries { + """Запрос на получение разделов настроек для контекстной школы""" + getSchoolConfigurationSections: [SchoolSelfConfigurationSection!]! + + """ + Запрос на получение подразделов и настроек для школы по идентификатору раздела + """ + getSchoolConfigurationSection(configurationSectionId: ID!): GetSchoolSelfConfigurationSectionResponse! +} + +"""Раздел настроек организации""" +type SchoolSelfConfigurationSection { + """Идентификатор раздела""" + configurationSectionId: ID! + + """ + Название раздела. Например "Информация о школе", "Выставление отметок" + """ + sectionName: String! + + """Порядковый номер этого раздела среди разделов той же организации""" + sequenceNumber: Int! + + """Подразделы настроек этого раздела""" + subsections: [SchoolSelfConfigurationSubsection!]! +} + +"""Подраздел настроек организации""" +type SchoolSelfConfigurationSubsection { + """Идентификатор подраздела""" + configurationSubsectionId: ID! + + """Название подраздела""" + subsectionName: String! + + """ + Порядковый номер этого подраздела в рамках определенного раздела и организации + """ + sequenceNumber: Int! + + """Настройки, входящие в подраздел""" + properties: [SchoolSelfConfigurationProperty!]! +} + +"""""" +type SchoolTag { + """""" + tag: String! + + """""" + id: Int! +} + +"""""" +input SchoolUpdateInput { + """""" + fullName: String + + """""" + shortName: String + + """""" + address: String + + """""" + active: Boolean + + """""" + logo: String + + """""" + individualPlan: Boolean + + """""" + timeZoneId: String! + + """""" + regionId: UUID! + + """""" + organizationType: OrganizationType! + + """ИНН""" + inn: String + + """Удаленный список тэгов""" + removedTags: [String!]! + + """Новый список тегов""" + addedTags: [String!]! + + """Конфигурация чтения / записи""" + tenantConfiguration: TenantConfigurationInput +} + +"""Проверяющий по предмету в текущей школе""" +type SchoolVerifier { + """имя проверяющего""" + firstName: String! + + """фамилия проверяющего""" + lastName: String! + + """отчетство проверяющего""" + middleName: String + + """идентификатор проверяющего как пользователя платформы""" + userId: UUID! +} + +"""Ответ на массовый перевод модулей/заданий на необходимый статус/скоуп""" +type ScopeAndStatusChangeResponse { + """Признак успешно выполненного перевода всех модулей""" + isSuccess: Boolean! + + """Отношение неуспешно переведенных ИД модулей к возникшей ошибке""" + goalIdToErrorMapModel: [GoalIdToErrorMapModel!] + + """Отношение неуспешно переведенных ИД заданий к возникшей ошибке""" + taskIdToErrorMapModel: [TaskIdToErrorMapModel!] +} + +"""""" +enum ScopeEnum { + """Глобальная""" + GLOBAL + + """Кастомная""" + CUSTOM + + """Персональная""" + PRIVATE +} + +"""Скоуп для установки на модуль или задание""" +input ScopeForSet { + """Скоуп""" + code: ScopeEnum + + """Пользователи (для кастомного скоупа)""" + users: [ID!] + + """Школы (для кастомного скоупа)""" + schools: [ID!]! +} + +"""информация по скоуп""" +type ScopeInfo { + """""" + scope: ScopeEnum! + + """""" + schoolIds: [ID!]! + + """""" + userIds: [ID!]! + + """""" + schoolShortNames: [String] +} + +"""Пресеты для кастомной области видимости""" +enum ScopePresetEnum { + """Учительский""" + TEACHER + + """Школьный""" + SCHOOL +} + +"""Счет""" +type Score { + """""" + hardScore: Int! + + """""" + softScore: Int! +} + +"""Объяснение счета""" +type ScoreExplanation { + """Объяснения ограничений""" + constraintExplanations: [ConstraintExplanation!]! + + """Счет""" + solutionScore: Score! + + """ + список результатов обработки ограничения, упорядоченный и отфильтрованный + """ + constraintResults: [ConstraintResult!]! + + """количество попыток составить расписание""" + stepsCount: ConstraintResult! + + """количество нерасставленных уроков""" + unprocessedLessonsCount: ConstraintResult! +} + +"""Модель оценки вопроса по чек-листу""" +type ScoreQuestion { + """Id вопроса секции""" + sectionQuestionId: ID! + + """Id балла оценки""" + ratingWeightId: ID! + + """Описание оценки""" + value: String +} + +"""Модель оценки вопроса по чек-листу""" +input ScoreQuestionInput { + """Id вопроса секции""" + sectionQuestionId: ID! + + """Id балла оценки""" + ratingWeightId: ID! +} + +"""Получение результата выполнения scorm-задания с бэка""" +type ScormAnswerBody { + """результат""" + result: String +} + +""" +Отправляемый ответ +внутри result следующая структура (+ экранирование) +{ + "type":"result", + "data":{ + "progress":"null", + "passingScore":"", + "status":"incomplete" + } +} +""" +input ScormAnswerBodyInput { + """результат""" + result: String +} + +"""Для фильтра по описаниям заданий (searchExternalTasks)""" +input SearchExternalTaskInput { + """""" + subject: String + + """""" + stage: Int +} + +"""Параметры глобального поиска""" +enum SearchItem { + """Проекты участника Ш21""" + STUDENT_PROJECTS + + """Ученики""" + PROFILES + + """Группы проектов участника Ш21""" + STUDENT_COURSES + + """Группы пронктов и проекты участника Ш21""" + STUDENT_COURSES_AND_PROJECTS +} + +"""Подсказка из истории поиска""" +type SearchTooltip { + """Текст подсказки""" + tooltipText: String + + """Категория поиска""" + tooltipCategory: SearchItem +} + +"""Вопрос секции чек-листа""" +type SectionQuestion { + """Идентификатор вопроса""" + sectionQuestionId: ID! + + """Идентификатор секции""" + checklistSectionId: ID! + + """Название вопроса""" + name: String! + + """Описание вопроса""" + description: String! + + """Идентификатор шкалы""" + taskAssessmentScale: CriterionScale! +} + +"""""" +enum SectionType { + """Первый шаблон: 2 равные колонки, слева 2 блока, справа 1 блок""" + COLS_EQ_L2_R1 + + """Второй шаблон: 2 неравные колонки, слева 1 блок, справа 1 блок""" + COLS_NEQ_L1_R2 + + """Третий шаблон: 1 колонка, суженная по краям, 1 блок""" + COL_NARROW + + """Четвёртый шаблон: 1 колонка во всю ширину, 1 блок""" + COL_WIDE + + """Пятый шаблон: 2 равные колонки, слева 1 блок, справа 1 блок""" + COLS_EQ_L1_R1 + + """Второй шаблон: 2 равные колонки, слева 1 блок, справа 2 блока""" + COLS_EQ_L2_R1_MIRRORED + + """Четвертый шаблон: 2 неравные колонки, слева 2 блока, справа 1 блок""" + COLS_NEQ_L1_R2_MIRRORED +} + +"""""" +type Selection { + """""" + selectionId: ID! + + """Имя подборки""" + name: String! + + """Тип подборки""" + selectionType: SelectionType! + + """Ссылка на обложку подборки""" + coverUrl: String + + """ + правила составления подборки + rules: [SelectionRuleDTO!]! + мета с названиями параллелей в EDUCATION_STAGE + """ + meta: [SelectionMetaValue!]! @deprecated(reason: "Произвели переход к идентификаторам параллелей, использовать metaV2") + + """мета с идентификаторами параллелей в EDUCATION_STAGE""" + metaV2: [SelectionMetaValue!]! + + """идентификатор автора""" + creatorId: ID! + + """идентификатор пользователя, изменившего подборку""" + lastModifierUserId: ID! + + """автор""" + creatorUser: UserInfo + + """юзер, внесший исправления""" + modifierUser: UserInfo + + """время создания подборки""" + creatorTs: DateTime! + + """время изменения подборки""" + lastModifiedTs: DateTime! + + """true - нормальнай элемент, false - удален""" + isActive: Boolean! + + """ + можно ли управлять (менять/назначать/работать с содержимым) данной подборкой + """ + isManageable: Boolean! + + """количество материалов в подборке""" + itemsCount: Int +} + +"""""" +input SelectionCreateInput { + """Имя подборки""" + name: String! + + """Ссылка на обложку подборки""" + coverUrl: String + + """Тип подборки""" + selectionType: SelectionType! +} + +"""""" +enum SelectionKind { + """""" + MY_ONLY + + """""" + COLLEAGUES + + """""" + SBER +} + +"""""" +enum SelectionMeta { + """""" + EDUCATION_STAGE + + """""" + EDUCATION_SUBJECT +} + +"""""" +input SelectionMetaInput { + """""" + metaType: SelectionMeta! + + """""" + metaValue: String! +} + +"""""" +type SelectionMetaValue { + """""" + metaType: SelectionMeta! + + """""" + metaValue: String! +} + +"""""" +type SelectionMutations { + """создание подборки""" + createSelection(selection: SelectionCreateInput!): Selection! + + """создание подборки и привязка к объекту""" + createSelectionAndBindToAndAddItems(selection: SelectionCreateInput!, entityType: EntityType!, entityId: ID!, meta: [SelectionMetaInput!]!, itemIds: [ID!]!): Selection! + + """изменение подборки""" + updateSelection(selection: SelectionUpdateInput!): Selection! + + """удаление подборки""" + deleteSelection(selectionId: ID!): Boolean! + + """ + удалить items из подборки, отвязать подборку от объекта, удалить подборку + """ + deleteItemsAndUnbindFromAndDeleteSelection(selectionId: ID!, itemIds: [ID!]!, entityType: EntityType!, entityId: ID!): Boolean! + + """Связать подборку с объектом""" + bindEntity(selectionId: ID!, entityType: EntityType!, entityId: ID!, meta: [SelectionMetaInput!]!): Boolean! + + """Разорвать связь подборки и объекта""" + unbindEntity(selectionId: ID!, entityType: EntityType!, entityId: ID!): Boolean! + + """Добавить элементы в подборку""" + addItems(selectionId: ID!, itemIds: [ID!]!): Boolean! + + """Исключить элементы из подборки""" + deleteItems(selectionId: ID!, itemIds: [ID!]!): Boolean! + + """Задать список подборок для айтема (элемента каталога)""" + setSelectionsForItem(itemId: ID!, selectionIds: [ID!]!): Boolean! @deprecated(reason: "Перечисление всех подборок может привести к нежелательному удалению материала из поборок коллег.\nА также использование этого запроса может привести к потере изменений при одновременном использовании коллегами.") + + """Задать список подборок для айтема (элемента каталога) V2""" + setSelectionsForItemV2(itemId: ID!, addedSelectionIds: [ID!], deletedSelectionIds: [ID!]): Boolean! +} + +"""""" +type SelectionQueries { + """получить информацию по коду подборки""" + getSelection(selectionId: ID!): Selection! + + """получить список подборок (коды) по объекту""" + getSelectionByEntity(entityType: EntityType!, entityId: ID!): [ID!]! + + """получить список подборок (коды) по айтему""" + getSelectionByItem(itemId: ID!): [ID!]! + + """Получить состав подборки (список элементов)""" + getItems(selectionId: ID!, offset: Int, limit: Int): [ContentItem!]! + + """Получить объекты по выборке""" + getEntityBySelection(selectionId: ID!): [Entity!]! + + """Получить подборки по списку авторов""" + getSelectionsByCreatorIds(creatorIds: [ID!]!, offset: Int, limit: Int): [Selection!]! + + """Получить список модулей по фильтру""" + getModules(subjectId: ID!, stage: AdditionalContentStage!): [ModuleInfo!]! @deprecated(reason: "Использовать getModulesV2") + + """Получить список модулей по фильтру""" + getModulesV2(subjectId: ID!, stage: ID): [ModuleInfo!]! + + """Получить модуль по коду""" + getModuleById(moduleId: ID!): ModuleInfo! + + """Получить подборки по фильтру""" + getSelections( + """вид подборок (мои подборки, подборки коллег, подборки Сбера)""" + kind: SelectionKind + + """тип формирования подборки (по правилу, по списку)""" + selectionType: SelectionType + + """код для предмета""" + subjectIds: [ID!] + + """тип обьекта""" + entityType: EntityType + + """ + типы объектов, работает в комбинации с флагом bound + при не пустом списке entityTypes работает следующим образом: + 1. bound = null - будут возвращены либо не привязанные подборки, либо привязанные к + сущностям указанного типа + 2. bound = true - будут возвращены ТОЛЬКО подборки, привязанные к сущностям указанного типа + 3. bound = false - не имеет смысла, всегда будет пустой список + """ + entityTypes: [EntityType!] + + """параллель""" + stages: [AdditionalContentStage!] + + """параллели (Stage)""" + stageIds: [ID!] + + """автор""" + creatorId: ID + + """назначена/не назначена подборка""" + bound: Boolean + + """поиск по названию""" + textSearch: String + + """кол-во элементов для пропуска""" + offset: Int + + """ограничение кол-ва""" + limit: Int + + """ID тегов для поиска по группе""" + tagIds: [ID!] + ): [Selection!]! + + """Получить список всех авторов""" + getAllCreators(offset: Int, limit: Int): [UserInfo]! + + """Получить список значений мета подборок""" + getMetaValues(metaId: SelectionMeta!): [String!]! + + """Получить счетчики по подборкам""" + getCounters: CounterInfo! + + """Получение списка паралелей для предмета из указаной подборки""" + getAvailableStagesByEntity(entityType: EntityType!, entityId: ID!): [AdditionalContentStage!]! @deprecated(reason: "Использовать getAvailableStagesByEntityV2") + + """ + Получение списка доступных параллелей для сущности, связанной с подборкой + """ + getAvailableStagesByEntityV2(entityType: EntityType!, entityId: ID!): [Stage!]! +} + +"""""" +enum SelectionStageEnum { + """""" + CONSTRUCTOR_CONDITIONS + + """""" + MEETINGS_FREQUENCY + + """""" + LAST_MEETING_TIME + + """""" + PRP_AMOUNT + + """""" + RANDOM_SELECTION + + """""" + MULTICAMPUS + + """""" + WINNER +} + +"""""" +enum SelectionType { + """""" + RULE_BASED + + """""" + LIST_BASED +} + +"""""" +input SelectionUpdateInput { + """код подборки""" + selectionId: ID! + + """Имя подборки""" + name: String! + + """Ссылка на обложку подборки""" + coverUrl: String + + """Тип подборки""" + selectionType: SelectionType! +} + +""" +Флаги управления подборками каталога в рамках медиатеки (комбинация прав доступа и фича-флагов) +""" +type SelectionsManagementProperties { + """Доступность создания подборки (мутация createSelections)""" + createSelection: Boolean! +} + +"""""" +type Selector { + """""" + id: Int! + + """""" + title: String! + + """""" + subTitle: String! + + """""" + group: String! +} + +"""""" +type SelectorByAttestationPeriod { + """""" + id: Int! + + """""" + title: String! + + """""" + subTitle: String! + + """дата начала""" + startDate: Date! + + """дата окончания""" + endDate: Date! + + """дата закрытия модулей""" + closeModuleDate: Date! +} + +"""""" +type SelfAssessmentAnswer { + """""" + answerId: ID! + + """""" + questionId: ID! + + """""" + answerVariantText: String! + + """""" + answerPoints: Int! +} + +"""""" +type SelfAssessmentAverage { + """""" + id: ID! + + """""" + studentId: UUID! + + """""" + softSkillId: ID! + + """""" + averageScore: Int! + + """""" + createdTime: DateTime! +} + +"""""" +input SelfAssessmentAverageInput { + """""" + studentId: UUID! + + """""" + softSkillId: ID! + + """""" + averageScore: Int! +} + +"""""" +type SelfAssessmentQuestion { + """""" + questionId: ID! + + """""" + questionText: String! + + """""" + softSkillId: ID! + + """""" + mixAnswer: Boolean! + + """""" + assessmentAnswerModels: [SelfAssessmentAnswer!]! + + """""" + testId: ID! +} + +"""""" +type SelfAssessmentTest { + """""" + testId: ID! + + """""" + stageId: ID! + + """""" + questions: [SelfAssessmentQuestion!]! +} + +"""""" +type SelfCheckInfo { + """ключ к вопросу""" + questionKey: String! + + """ключ к тесту SurveyJs (json)""" + jsonKey: String! + + """Список прикрепленных файлов""" + files: [TaskInfoFile!]! +} + +"""""" +enum SessionStatusFromExamus { + """ + Пользователь не записан на тестирование с прокторингом (для экзаменов с записью) + """ + NOT_SCHEDULED + + """Время сдачи еще не наступило""" + EARLY_TO_START + + """Пользователь может приступить к тестированию""" + READY_TO_START + + """ + Пользователь не может приступить к тестированию, т.к. время старта уже прошло + """ + LATE_TO_START + + """Пользователь проходит тестирование""" + STARTED + + """Пользователь завершил тестирование""" + FINISHED + + """Ошибка 404, означает что запрошенного sessionId не существует""" + NOT_FOUND + + """Неопознанная ошибка""" + UNKNOWN +} + +"""""" +type SetTaskCriteriaConformityForStudentTasksResponse { + """""" + studentId: ID! + + """""" + studentCriteriaValueModels: [StudentCriteriaValue!]! +} + +"""Сохраняемые настройки страницы экзаменационного теста""" +input SettingsExamTestPageInput { + """Идентификатор страницы""" + pageId: UUID! + + """Количество одновременно отображаемых виджетов на странице""" + numberOfDisplayedPageWidgets: Int! + + """Список настроенных для страницы гибких навыков""" + softSkillsInPageSettings: [SoftSkillInExamTestPageSettingsInput!]! +} + +"""Настройки страницы экзаменационного теста""" +type SettingsExamTestPageModel { + """Идентификатор страницы""" + pageId: UUID! + + """Количество всех виджетов на странице""" + numberOfAllPageWidgets: Int! + + """Количество одновременно отображаемых виджетов на странице""" + numberOfDisplayedPageWidgets: Int! + + """Опыт, начисляемый за прохождение страницы (всех виджетов на странице)""" + pageExperience: Int + + """Вес страницы""" + pageWeight: Float + + """Список настроенных для страницы гибких навыков""" + softSkillsInPageSettings: [SoftSkillInExamTestPageSettings!]! + + """Порядковый номер страницы в экзаменационном тесте""" + pageOrder: Int +} + +"""Блок сохраняемых настроек страниц экзаменационного теста""" +input SettingsExamTestPagesInput { + """Идентификатор задания (таски) экзаменационного теста""" + taskId: ID! + + """Список настроек страниц экзаменационного теста""" + settingsExamTestPages: [SettingsExamTestPageInput!]! +} + +"""Перенос дедлайна""" +input ShiftDeadline { + """Идентификатор студента""" + studentId: UUID! + + """Идентификатор дедлайна""" + deadlineId: UUID! + + """ + Количество дней для сдвига + @deprecated(reason: "Use parameter 'shiftTs' instead") + """ + daysToShift: Int! + + """Дата и время сдвига для дедлайна""" + shiftTs: DateTime +} + +"""Сокращенная модель организаций""" +type ShortOrganizationModel { + """""" + organizationId: UUID! + + """""" + fullName: String! + + """""" + shortName: String! + + """""" + postAddress: String + + """""" + orderBase: Int! +} + +"""Краткая информация о прогрессе студента""" +type ShortStudentProgress { + """ + Прогресс прохождения всех модулей в процентах. (achievedModuleLevelCount / plannedModuleLevelCount) + """ + progress: Int! + + """ + Сумма всех достигнутых уровней + (если на уровне 1.0 нет заданий, то достижении уровня 2.0 считается достигнутым 2 уровня) + """ + achievedModuleLevelCount: Int! + + """Сумма целевых уровней всех модулей""" + plannedModuleLevelCount: Int! + + """Траектория""" + trajectory: String + + """Начало прохождения""" + start: DateTime + + """Окончание прохождения""" + end: DateTime + + """Запланированная трудоемкость в часах""" + planLaboriousnessHours: Int + + """Запланированная трудоемкость в днях""" + planLaboriousnessDays: Int +} + +"""""" +type SimpleAnswerBody { + """Ответ""" + answer: String! + + """Правильный ответ""" + correct: Boolean +} + +"""""" +input SimpleAnswerBodyInput { + """Простой ответ""" + answer: String! +} + +"""""" +type SkillDescription { + """""" + description: String! + + """""" + achieved: Boolean! +} + +"""Навык из чек-листа""" +type SkillWithNameInChecklist { + """Идентификатор объекта к которому привязан навык""" + id: ID! + + """Название навыка""" + skill: String! + + """Процент навыка""" + percent: Int! +} + +"""Навык из чек-листа""" +input SkillWithNameInChecklistInput { + """Идентификатор объекта к которому привязан навык""" + id: ID! + + """Название навыка""" + skill: String! + + """Процент навыка""" + percent: Int! +} + +"""""" +type SkillsTaskCriteriaValue { + """Идентификатор навыка""" + skillId: ID! + + """Соответствия критериев""" + criteriaValues: [TaskCriteriaValue!]! + + """Процент соответствия навыку""" + averageCriteria: Int! +} + +"""Информация о мягких навыках""" +type SoftSkill { + """ID""" + id: ID! + + """Название навыка""" + name: String! + + """Название иконки навыка, хранящееся на фронте""" + imageUrl: String! +} + +"""Cправочник категорий навыков""" +enum SoftSkillCategoryEnum { + """Мягкие навыки""" + SOFT_SKILL + + """Цифровые навыки""" + DIGITAL_SKILL + + """Навыки для Школы 21""" + SCHOOL21 + + """Предметные навыки""" + HARD_SKILL +} + +"""""" +type SoftSkillCount { + """Id Мягкого Навыка""" + softSkillId: ID! + + """Название Мягкого Навыка""" + name: String! + + """Количество Заданий с этим Мягким Навыком""" + taskCount: Int! + + """Количество Зачтенных Заданий с этим Мягким Навыком""" + completedTaskCount: Int! + + """Группа Мягкого Навыка""" + group: SoftSkillGroupEnum! +} + +"""Группа софт-скилла (объект)""" +type SoftSkillGroup { + """Идентификатор""" + id: ID! + + """Название""" + name: String + + """Порядок""" + order: Int +} + +"""Cправочник групп навыков""" +enum SoftSkillGroupEnum { + """Когнитивные""" + COGNITIVE + + """Социальные""" + SOCIAL + + """Эмоциональные""" + EMOTIONAL + + """Информационная грамотность""" + INFORMATION_LITERACY + + """Разработка цифровых продуктов""" + DIGITAL_PRODUCT_DEVELOPMENT + + """Безопасность в цифровой среде""" + DIGITAL_SECURITY + + """Комуникация и сотрудничество""" + COMMUNICATION_AND_COLLABORATION + + """Навыки в сфере IT (для Школы 21)""" + IT_SKILL + + """Предметные навыки""" + HARD_SKILL +} + +"""Гибкий навык в настройках страницы экзаменационного теста""" +type SoftSkillInExamTestPageSettings { + """Идентификатор навыка""" + softSkillId: ID! + + """Название навыка""" + softSkillName: String! + + """Процент навыка""" + percent: Int +} + +"""Гибкий навык в настройках страницы экзаменационного теста""" +input SoftSkillInExamTestPageSettingsInput { + """Идентификатор навыка""" + softSkillId: ID! + + """Процент навыка""" + percent: Int! +} + +"""Максимаьные значения гибких навыков""" +type SoftSkillLimit { + """ИД параллели""" + stageId: ID! @deprecated + + """Максимальное значение навыков для параллели""" + powerLimit: Int +} + +"""""" +type SoftSkillPercentage { + """""" + softSkillTypeId: ID! + + """""" + percentage: Int! +} + +"""""" +input SoftSkillPercentageInput { + """""" + softSkillTypeId: ID! + + """""" + percentage: Int! +} + +"""""" +type SoftSkillPoint { + """Название гибкого навыка""" + softSkillName: String! + + """Идентификатор гибкого навыка""" + softSkillId: Int! + + """ + Суммарное кол-во очков, которое можно получить за выполнение заданий в этом курсе, укрепляющих навык + """ + totalPower: Int! + + """Текущий уровень развития этого навыка у студента""" + currentUserPower: Int! + + """Максимальный уровень развития этого навыка в системе""" + maxPower: Int! + + """Количество очков навыка, полученное студентом за выполнение заданий""" + achievedUserPower: Int + + """Роль в команде, которой начисляется данный навык""" + teamRole: TeamRole +} + +"""Прогресс в разрезе типов навыков""" +type SoftSkillPower { + """Идентификатор (рандомно генерируется)""" + id: ID! + + """Наименование навыка(Пример: Познаю себя)""" + type: String! + + """ + Общее кол-во очков, полученное за выполнение заданий, укрепляющих навык + """ + totalPower: Int! + + """ + Кол-во очков, полученное за текущую дату при выполнении заданий, укрепляющих навык + """ + powerGrow: Int! + + """Относительное ссылка в файловый сервис на изображением мягкого навыка""" + imageUrl: String! + + """Цветовая кодировка""" + hueSaturationLightness: String! + + """В архиве""" + archive: Boolean! + + """Код""" + code: String! + + """Группа""" + group: SoftSkillGroupEnum! + + """Группа (объект)""" + softSkillGroup: SoftSkillGroup + + """Дескриптор""" + descriptor: String! + + """Категория""" + category: SoftSkillCategoryEnum! +} + +"""Группа навыков""" +type SoftSkillType { + """Идентификатор""" + id: ID! + + """Наименование""" + name: String! + + """Описание""" + description: String! + + """Категория""" + category: SoftSkillCategoryEnum! + + """В архиве""" + archive: Boolean! + + """Код""" + code: String! + + """Группа""" + group: SoftSkillGroupEnum! + + """Дескриптор""" + descriptor: String! + + """Относительное ссылка в файловый сервис на изображением мягкого навыка""" + imageUrl: String! + + """Цветовая кодировка""" + hueSaturationLightness: String! + + """Сокращенное наименование тенанта""" + tenantShortName: String +} + +"""Гибкие навыки с весом, прикрепляемые к заданию""" +input SoftSkillTypePowerInput { + """""" + id: ID! + + """""" + power: Float! +} + +"""""" +type SolutionInfo { + """Тип решения задания""" + solutionType: TaskSolutionTypeEnum! + + """Информация о решении при тип решения GitLab""" + gitlabSolutionInfo: GitlabSolutionInfo + + """Информация о решении при тип решения Platf""" + platfSolutionInfo: PlatfSolutionInfo +} + +"""""" +type SortableAnswerBody { + """""" + answers: [SortableAnswerBodyPair!]! +} + +"""""" +input SortableAnswerBodyInput { + """Ответ на виджет сортировка""" + answers: [SortableAnswerBodyPairInput!]! +} + +"""""" +type SortableAnswerBodyPair { + """UUID карточки""" + cardId: ID! + + """UUID группы, в случае если null значит, что карточка без группы""" + groupId: ID + + """""" + groupOrder: Int + + """Правильно/неправильно""" + correct: Boolean! +} + +"""""" +input SortableAnswerBodyPairInput { + """UUID карточки""" + cardId: ID! + + """UUID группы, в случае если null значит, что карточка без группы""" + groupId: ID + + """""" + groupOrder: Int +} + +"""""" +input SortingField { + """""" + name: String! + + """""" + asc: Boolean! +} + +"""""" +type Stage { + """идентификатор (номер) параллели""" + id: ID! + + """название параллели""" + name: String! +} + +"""""" +type StageBySubjectResponse { + """""" + stageId: ID! + + """""" + stageSubjectGroupsTaskCount: [StageSubjectGroupsTaskCountBySubjectTeacherResponse!]! +} + +"""""" +type StageConfiguration { + """""" + stage: Stage! + + """""" + isDeadlinesEnabled: Boolean! +} + +"""""" +input StageConfigurationInput { + """""" + stageId: ID! + + """""" + isDeadlinesEnabled: Boolean! +} + +"""Связи параллели с кампусами""" +type StageDependency { + """id параллели""" + stageId: ID! + + """наименование параллели""" + stageName: String! + + """список связанных с параллелью кампусов""" + schools: [SchoolDependency!]! + + """ + список классов для данной параллели (необязательное поле используется только у БА) + """ + classes: [ClassInStage!] +} + +"""deprecated, consider using StageGroupV2 instead""" +type StageGroup { + """""" + id: ID! + + """название класса (А, ФизТех)""" + name: String! + + """параллель""" + stage: Int! + + """академический год""" + academicYear: AcademicYear! + + """является ли межклассной группой""" + isIntergroup: Boolean! + + """группы по предметам""" + classSubjects: [ClassSubject!] + + """группы по предметам вместе с учителями""" + classSubjectsWithTeacher: [ClassSubject!] + + """количество групп по предметам""" + classSubjectsCount: Int! + + """студенты класса""" + students: [Student!] + + """количество студентов в классе""" + studentNumber: Int! + + """идентификатор классного руководителя класса, как пользователя""" + formMasterUserId: ID + + """классный руководитель""" + formMaster: User + + """не активные студенты класса""" + inactiveStudents: [Student!] + + """тип обучения""" + learningType: LearningTypeEnum! + + """Активный или удаленный""" + isActive: Boolean! + + """""" + lessonTimeslotsGroupId: ID @deprecated(reason: "Используйте StageGroupWithTimeslotSetId") +} + +"""""" +type StageGroupAggregated { + """""" + id: ID! + + """название класса (А, ФизТех)""" + name: String! + + """параллель""" + stage: Int! + + """академический год""" + academicYear: AcademicYear! + + """является ли межклассной группой""" + isIntergroup: Boolean! + + """группы по предметам""" + classSubjects: [ClassSubject!] + + """количество групп по предметам""" + classSubjectsCount: Int! + + """студенты класса""" + students: [Student!] + + """количество студентов в классе""" + studentNumber: Int! + + """идентификатор классного руководителя класса, как пользователя""" + formMasterUserId: ID + + """классный руководитель""" + formMaster: User + + """не активные студенты класса""" + inactiveStudents: [Student!] + + """тип обучения""" + learningType: LearningTypeEnum! + + """Активный или удаленный""" + isActive: Boolean! +} + +"""Общая информация по классу""" +type StageGroupCommonInfo { + """Идентификатор класса""" + stageGroupId: ID! + + """Название класса""" + stageGroupName: String! +} + +"""Драфт группы""" +type StageGroupDraft { + """Идентификатор драфта""" + stageGroupDraftId: ID! + + """Идентификатор учебного года""" + academicYearId: ID! + + """Идентификатор параллели""" + stageId: ID! + + """Наименование группы""" + stageGroupName: String! + + """Идентификатор учителя классного руководителя""" + formMaster: UUID + + """Имя учителя""" + teacherFirstName: String + + """Фамилия учителя""" + teacherLastName: String + + """Отчество учителя""" + teacherMiddleName: String +} + +"""Драфт группы входная модель""" +input StageGroupDraftInput { + """Идентификатор драфта""" + stageGroupDraftId: ID + + """Идентификатор учебного года""" + academicYearId: ID! + + """Идентификатор параллели""" + stageId: ID! + + """Наименование группы""" + stageGroupName: String! +} + +"""""" +type StageGroupExtended { + """""" + id: ID! + + """название класса (А, ФизТех)""" + name: String! + + """параллель""" + stage: Int! + + """академический год""" + academicYear: AcademicYear! + + """является ли межклассной группой""" + isIntergroup: Boolean! + + """группы по предметам""" + classSubjects: [ClassSubject!] + + """количество групп по предметам""" + classSubjectsCount: Int! + + """студенты класса""" + students: [Student!] + + """количество студентов в классе""" + studentNumber: Int! + + """идентификатор классного руководителя класса, как пользователя""" + formMasterUserId: ID + + """классный руководитель""" + formMaster: User + + """не активные студенты класса""" + inactiveStudents: [Student!] + + """тип обучения""" + learningType: LearningTypeEnum! + + """дата дедлайна""" + finishDate: DateTime + + """является ли интенсивом""" + isItIntensiveStage: Boolean +} + +"""Дата и время завершения обучения в классе""" +type StageGroupFinishDate { + """Идентификатор""" + stageGroupFinishDateId: UUID! + + """Идентификатор группы (класса)""" + stageGroupId: ID! + + """Дата завершения обучения""" + finishDate: DateTime +} + +"""Email на класс для помощи студентам Bootcamp""" +type StageGroupHelpEmailModel { + """Уникальный идентификатор""" + stageGroupHelpEmailId: ID + + """Идентификатор класса""" + stageGroupId: ID! + + """Email для обращений учеников в классе за помощью""" + email: String + + """Признак доступности для обращений""" + enabled: Boolean! + + """Дата и время создания""" + createTs: DateTime + + """Идентификатор пользователя создавшего запись""" + creatorUserId: ID + + """Дата и время последнего изменения""" + lastModifyTs: DateTime + + """Идентификатор пользователя последним изменившим запись""" + lastModifierUserId: ID +} + +"""""" +type StageGroupInfo { + """""" + stageGroupId: ID! + + """название класса (А, ФизТех)""" + stageGroupName: String! + + """параллель""" + stageId: Int! @deprecated(reason: "Нет названия параллели. Использовать поле stageInfo") + + """информация о параллели""" + stageInfo: Stage! + + """академический год""" + academicYearId: ID! + + """является ли межклассной группой""" + isIntergroup: Boolean! + + """классный руководитель""" + formMaster: UUID + + """идентификатор набора учебных периодов""" + studyPeriodSetId: Int +} + +"""""" +input StageGroupInput { + """""" + id: ID + + """""" + name: String! + + """""" + stage: Int! + + """""" + learningType: LearningTypeEnum + + """Активный или удаленный""" + isActive: Boolean! + + """""" + lessonTimeslotsGroupId: ID +} + +"""Первый шаг массового создания групп, входная модель""" +input StageGroupMassCreationFirstStepInput { + """Идентификатор параллели""" + stageId: Int! + + """Кол-во создаваемых групп""" + numberOfGroups: Int! +} + +"""""" +type StageGroupMassCreationMutations { + """Сохранение/обновление драфта группы""" + saveStageGroupDraft(stageGroupDraftInput: StageGroupDraftInput!): StageGroupDraft! + + """Удаление драфта группы""" + deleteStageGroupDraft(stageGroupDraftId: ID!): Boolean + + """Создание драфтов групп на первом шаге массового создания""" + createStageGroupDraftsOnFirstStage(academicYearId: ID!, stageGroupMassCreationFirstStepInputs: [StageGroupMassCreationFirstStepInput!]!): [StageGroupDraft!]! + + """Назначение классного руководителя класса""" + setStageGroupDraftFormMaster(stageGroupDraftId: ID!, formMaster: UUID!): StageGroupDraft! + + """Создание драфта гкпп""" + createStageSubjectGroupDraft(stageSubjectGroupDraftInput: StageSubjectGroupDraftInput!): StageSubjectGroupDraft! + + """Удаление драфта гкпп""" + deleteStageSubjectGroupDraft(stageSubjectGroupDraftId: ID!): Boolean + + """Установка шага массового создания групп""" + setStageGroupMassCreationStatusStep(step: StageGroupMassCreationStep!, stageId: ID): StageGroupMassCreationStatus! + + """Установка владельца процесса массового создания групп""" + setStageGroupMassCreationOwner: StageGroupMassCreationStatus! + + """Создание групп и гкпп из драфтов""" + createFromDrafts(academicYearId: ID!): Boolean! +} + +"""""" +type StageGroupMassCreationQueries { + """Получение драфтов групп по академическому году""" + getStageGroupDraftsByAcademicYearId(academicYearId: ID!): [StageGroupDraft!]! + + """Получение драфтов гкпп по академическому году и параллели""" + getStageSubjectGroupDraftsBy(academicYearId: ID!, stageId: ID!): [StageSubjectGroupDraft!]! + + """Получение статуса массового создания групп""" + findStageGroupMassCreationStatus: StageGroupMassCreationStatus + + """Проверка наличия связанных сущностей (драфты гкпп) драфта группы""" + ifStageGroupDraftHasRelatedEntities(stageGroupDraftId: ID!): Boolean! + + """Проверка наличия групп во всех учебных годах школы""" + ifSchoolHasStageGroups: Boolean! +} + +"""Статус массового создания групп""" +type StageGroupMassCreationStatus { + """Идентификатор статуса""" + stageGroupMassCreationStatusId: ID! + + """Идентификатор школы""" + schoolId: UUID! + + """Идентификатор академического года""" + academicYearId: ID! + + """Идентификатор пользователя владельца процесса массового создания""" + userId: UUID! + + """Имя пользователя""" + firstName: String! + + """Фамилия пользователя""" + lastName: String! + + """Отчество пользователя""" + middleName: String + + """Шаг""" + step: StageGroupMassCreationStep! + + """Идентификатор параллели (только для второго шага)""" + stageId: Int + + """Признак того, что процесс создания групп из драфтов запущен""" + isCreationInProcess: Boolean! + + """Признак того, что процесс массового создания завершен""" + isFinished: Boolean! +} + +"""""" +enum StageGroupMassCreationStep { + """""" + FIRST_STEP + + """""" + SECOND_STEP + + """""" + THIRD_STEP +} + +"""Емейл психолога с перечнем класов привязанных к этому емейлу""" +type StageGroupPsychologistEmail { + """Емейл психолога""" + email: String! + + """Идентификаторы классов школы закрепленых за данным психологом""" + stageGroupIds: [ID!]! +} + +"""""" +type StageGroupS21 { + """""" + waveId: Int! + + """название волны (аналог stage_group_name)""" + waveName: String! + + """название формы обучения (аналог stage_name)""" + eduForm: String! + + """статус класса""" + active: Boolean +} + +"""""" +type StageGroupS21Student { + """Идентификатор связки студента и параллели""" + stageGroupStudentId: ID! + + """Идентификатор студента""" + studentId: UUID! + + """Параллель в Ш21""" + stageGroupS21: StageGroupS21! + + """Школа""" + safeSchool: SafeSchool! +} + +"""Заявка на вступление в класс""" +type StageGroupStudentRequest { + """""" + stageGroupStudentRequestId: ID! + + """Группа (класс)""" + stageGroup: StageGroup! + + """Студент""" + student: Student! + + """Статус заявки""" + status: StageGroupStudentRequestStatus! + + """Время создания""" + createdTs: DateTime! + + """Время изменения""" + updatedTs: DateTime +} + +"""Статус заявки на вступление в класс""" +enum StageGroupStudentRequestStatus { + """На подтверждении""" + PENDING_CONFIRMATION + + """Подтверждено""" + CONFIRMED + + """Отклонено""" + REJECTED +} + +"""Уроки по группе по параллели""" +type StageGroupTimetable { + """""" + stageGroupName: String! + + """""" + lessons: [ExtendedLesson!]! +} + +"""Драфты уроков групп по классам""" +type StageGroupTimetableDraft { + """Наименование класса""" + stageGroupName: String! + + """Драфты уроков по ГКпП""" + lessonDrafts: [ExtendedLessonDraft!]! +} + +"""Драфты уроков групп по классам""" +input StageGroupTimetableDraftInput { + """Идентификатор класса""" + stageGroupId: ID! + + """Драфты уроков по ГКпП""" + lessonDrafts: [LessonDraft!]! +} + +"""""" +type StageGroupType { + """""" + id: UUID + + """ID основного (18+) класса""" + stageGroupId: Float! + + """Название основного класса""" + stageGroupName: String! + + """ID класса для регистрации несовершеннолетних (18-)""" + stageGroupForJuvenilesId: Float + + """Название класса для регистрации несовершеннолетних""" + stageGroupForJuvenilesName: String + + """ID класса команд""" + stageGroupForTeamsId: Float + + """Название класса команд""" + stageGroupForTeamsName: String + + """ID школы""" + schoolId: UUID! + + """Название школы""" + schoolShortName: String! + + """Указывает на тип школы: SCHOOL или UNIVERSITY""" + userType: String! +} + +""" +Единая модель учебного класса +Состоит из базовых и дополнительных полей: +Базовые поля заполняются всегда. +Дополнительные поля заполняются только по запросу клиента через кастомные резолверы, например StageGroupV2Resolver +""" +type StageGroupV2 { + """ + базовые поля + идентификатор класса + """ + stageGroupId: ID! + + """ + идентификатор (номер) учебной параллели, на которой располагается класс + """ + stageId: Int! + + """идентификатор академического года, к которому относится класс""" + academicYearId: ID! + + """наименование класса""" + stageGroupName: String! + + """идентификатор набора учебных периодов, к которому привязан класс""" + studyPeriodSetId: Int + + """идентификатор пользователя, являющегося классным руководителем""" + formMasterUserId: UUID + + """является ли класс межклассовой группой (группой параллели)""" + isIntergroup: Boolean! + + """тип обучения класса""" + stageGroupLearningType: LearningTypeEnum! + + """признак класса: активен или удален""" + isActive: Boolean! + + """ + техническое поле. Типы обучения для агрегации дополнительных полей с информацией о ГКпП класса + """ + stageSubjectGroupLearningTypes: [LearningTypeEnum!] + + """ + дополнительные поля + учебная параллель, которой принадлежит класс + """ + stageInfo: Stage! + + """количество активных учеников в классе""" + studentCount: Int! + + """активные ученики класса""" + students: [Student!] + + """все ученики класса, включая неактивных""" + allStudents: [Student!] + + """не активные ученики класса""" + inactiveStudents: [Student!] + + """ + количество ГКпП в классе + учитываются только активные ГКпП с типом обучения #stageSubjectGroupLearningTypes + """ + stageSubjectGroupCount: Int! + + """ + ГКпП класса + учитываются только активные ГКпП с типом обучения #stageSubjectGroupLearningTypes + """ + stageSubjectGroups: [ClassSubject!] + + """академический год класса #academicYearId""" + academicYear: AcademicYear! + + """классный руководитель #formMasterUserId""" + formMaster: User +} + +"""""" +type StageGroupWithTimeslotSetId { + """""" + stageGroup: StageGroup! + + """""" + timeslotSetId: ID +} + +""" +Доступные и недоступные настройки мультикампусности для одной параллели определенной школы +""" +type StageMulticampusSettingForRecovery { + """id параллели""" + stageId: ID! + + """наименование параллели""" + stageName: String! + + """Доступные кампусы под восстановление для данной параллели""" + availableSchoolDependency: [SchoolDependency!] + + """Недоступные кампусы под восстановление для данной параллели""" + unavailableSchoolDependency: [SchoolDependency!] +} + +"""План на Параллель по Предмету (stage_subject_plan_id)""" +type StagePlan { + """Идентификатор (stage_subject_plans.stage_subject_plan_id)""" + id: ID! + + """статус Плана""" + status: PlanStatusEnum! + + """ + список Учебных Модулей в Плане с привязкой к датам и необходимому для достижения уровню + """ + frames: [StagePlanFrame!]! + + """Предмет, по которому составлен План на параллель""" + subject: Subject! + + """Параллель, для котоой составлен Учебный План""" + stage: Stage! + + """Количество модулей""" + modulesCount: Int + + """Общая трудоемкость""" + laboriousness: Int + + """Последний день последнего модуля""" + endDate: Date + + """Идентификатор глобального плана, на основе которого создан этот план""" + globalStagePlanId: ID +} + +"""Учебный Модуль внутри Плана на Параллель""" +type StagePlanFrame { + """Идентификатор (stage_subject_plan_goals.stage_subject_plan_goal_id)""" + id: ID! + + """Порядок следования учебных модулей""" + order: Int! + + """Длительность данного учебного модуля в днях""" + countOfDays: Int! + + """Уровень, на котором Учебный Модуль объявляется достигнутым учеником""" + achieveLevel: Float! + + """Примерная трудоемкость Учебного Модуля в часах в рамках текущего Плана""" + laboriousness: Int! + + """Учебный Модуль""" + module: StudyModule! + + """Дефолтный плейлист относящийся к данному модулю""" + playlist: TaskSet! + + """Условия прохождения учебного модуля в плане""" + conditions: [PlanFrameCondition!]! +} + +"""""" +input StagePlanFrameInput { + """Идентификатор""" + id: ID + + """Порядок Учебного Модуля в рамках Плана""" + order: Int! + + """Количество дней рекомендуемых для прохождения Учебного Модуля""" + countOfDays: Int! + + """Уровень, на котором Учебный Модуль объявляется достигнутым учеником""" + achieveLevel: Float! + + """Примерная трудоемкость Учебного Модуля в часах в рамках текущего Плана""" + laboriousness: Int! + + """Учебный Модуль""" + moduleId: ID! + + """Условия прохождения Учебного Модуля""" + conditions: [PlanFrameConditionInput!]! +} + +"""Правила подсчета дат для проекта""" +type StagePlanRules { + """ + "Начать с ..." + """ + ruleBeginFrom: Int! + + """ + "Часы на проект" + """ + ruleProjectHours: Int! + + """ + "Регистрация" + """ + ruleSignUpFrom: Int! + + """ + "Проверка" + """ + ruleCheckFrom: Int! + + """Флаг, указывающий на игнорирование любых дедлайнов для модуля""" + deadlineFree: Boolean! +} + +"""""" +type StageS21ClassPlans { + """Идентификатор параллели""" + stageId: ID! + + """Название параллели""" + stageName: String + + """Список планов для групп по предмету""" + classPlans: [S21ClassPlan!]! +} + +"""Параллели со списками доступных учебных периодов""" +type StageStudyPeriods { + """""" + stageId: Int! + + """""" + stageName: String! + + """""" + studyPeriods: [StudyPeriod]! + + """""" + userPeriodId: Int +} + +"""Предмет который преподается в конкретной Школе в конкретной Параллели""" +type StageSubject { + """Идентификатор (stage_subjects.stage_subject_id)""" + id: ID! + + """Параллель""" + stage: Stage! + + """Предмет""" + subject: Subject + + """План по Предмету на Параллель""" + plan: StagePlan + + """ + Минимальное кол-во часов в год, + выделенное на предмет среди классов одной параллели определенной школы по учебному плану + """ + minHourInYearForSubject: Int +} + +"""Итоговые оценки по предмету параллели""" +type StageSubjectFinalMarks { + """Идентификатор предмета параллели""" + stageSubjectId: ID! + + """Наименование предмета""" + subjectName: String! + + """Итоговые оценки за АП""" + marks: [AttestationPeriodFinalMark!]! + + """Годовые оценки (за экзамен, аттестационные в зависимости от настроек)""" + yearMarks: [YearFinalMark!]! +} + +"""""" +type StageSubjectGroup { + """""" + stageSubjectGroupId: ID! + + """""" + stageGroupId: ID! + + """""" + stageSubjectId: ID! + + """""" + name: String! + + """""" + personalizationLevel: String! + + """""" + teacherId: UUID! + + """""" + singleSubjectGroup: Boolean! + + """""" + startDate: DateTime +} + +"""""" +type StageSubjectGroupAttestationEntryModel { + """""" + key: String! + + """""" + stageSubjectGroupAttestation: StageSubjectGroupAttestationModel! +} + +"""""" +input StageSubjectGroupAttestationInputModel { + """id класса""" + stageGroupId: ID! + + """id предмета""" + subjectId: ID! + + """Тип аттестации""" + attestationType: AttestationTypeModel! + + """ + id Графика Аттестационных периодов, по которому проходит аттестация по предмету в классе + """ + attestationPeriodSetId: ID +} + +""" +Вид Аттестации, установленный для Класса по Предмету. +Распространяется на все ГКпП класса {@link #stageGroupId} по предмету {@link #subjectId} +""" +type StageSubjectGroupAttestationModel { + """id класса""" + stageGroupId: ID! + + """id предмета""" + subjectId: ID! + + """Тип аттестации""" + attestationType: AttestationTypeModel! + + """ + id Графика Аттестационных периодов, по которому проходит аттестация по предмету в классе + """ + attestationPeriodSetId: ID +} + +"""Драфт гкпп""" +type StageSubjectGroupDraft { + """Идентификатор драфта""" + stageSubjectGroupDraftId: ID! + + """Идентификатор драфта группы из таблицы 'stage_group_drafts'""" + stageGroupDraftId: ID! + + """Идентификатор предмета""" + subjectId: ID! + + """Идентификатор учителя""" + teacherId: UUID! +} + +"""Драфт гкпп входная модель""" +input StageSubjectGroupDraftInput { + """Идентификатор драфта""" + stageSubjectGroupDraftId: ID + + """Идентификатор драфта группы из таблицы 'stage_group_drafts'""" + stageGroupDraftId: ID! + + """Идентификатор предмета""" + subjectId: ID! + + """Идентификатор учителя""" + teacherId: UUID! +} + +"""""" +type StageSubjectGroupExtended { + """""" + stageSubjectGroupId: ID! + + """""" + stageSubjectId: ID! + + """""" + name: String! + + """""" + teacherId: UUID! + + """""" + singleSubjectGroup: Boolean! + + """""" + subjectName: String! + + """""" + teacherFullName: String! + + """""" + teacherUserId: UUID! + + """""" + numberOfStudents: Int! + + """""" + itemsCount: Int! +} + +"""Фильтр для поиска ГКпП""" +input StageSubjectGroupFilter { + """список параллелей""" + stageIds: [ID!]! + + """список предметов""" + subjectIds: [ID!]! + + """список учебных лет""" + academicYearId: ID + + """список ГКпП""" + stageSubjectGroupIds: [ID!]! + + """показывать ГКпП без КТП""" + showStageSubjectGroupsWithoutCalendarThematicPlan: Boolean +} + +"""Информация о ГКпП в контексте ЭЖ""" +type StageSubjectGroupInfo { + """Класс в котором была создана ГКПП""" + stageGroup: StageGroup! + + """Предмет ГКПП""" + subject: Subject! + + """Признак является ли контекстный пользователь учителем переданной ГКПП""" + isStageSubjectGroupTeacher: Boolean! + + """Все ГКПП, созданные в классе запрошенной ГКпП (по тому же предмету)""" + stageSubjectGroups: [StageSubjectGroup!]! +} + +"""Модель данных по гкпп""" +type StageSubjectGroupInfoForMarks { + """ГКПП""" + stageSubjectGroup: StageSubjectGroup! + + """Аттестационные периоды""" + attestationPeriods: [AttestationPeriod!]! + + """Параллель""" + stage: Stage! + + """Предмет""" + subject: Subject! + + """Обобщенная конфигурация оценивания""" + ratingConfiguration: RatingConfiguration! + + """Подгруппы гкпп""" + stageSubjectSubgroups: [StageSubjectSubgroupForMarks!]! +} + +"""Модель ответа на запрос общей информации о ГКпП в контексте ЭЖ""" +type StageSubjectGroupInfoResponse { + """Тело ответа""" + data: StageSubjectGroupInfo + + """Признак успешности выполнения запроса""" + isSuccess: Boolean! + + """Описание ошибки, возникшей в ходе выполнения запроса""" + error: EJournalError +} + +"""""" +type StageSubjectGroupTaskCount { + """""" + stageSubjectGroup: StageSubjectGroup! + + """""" + stageGroup: StageGroup! + + """""" + subject: Subject! + + """""" + taskCount: Int! + + """""" + studentTaskIds: [ID!] +} + +""" +Данные из журнала посещаемости, сгруппированный для одной группы по предмету +""" +type StageSubjectGroupVisitJournal { + """Предмет""" + subject: Subject! + + """Идентификатор группы по предмету""" + stageSubjectGroupId: ID! + + """Даты посещений (группы для колонок)""" + lessons: [VisitJournalLesson!]! + + """Строки журнала""" + rows: [VisitJournalRow!]! + + """Идентификатор учителя группы""" + groupTeacherId: ID! +} + +"""""" +type StageSubjectGroupsBySubjectTeacherResponse { + """""" + stageGroupTeacher: [StageGroup!]! + + """""" + subjectTeacher: [Subject!]! + + """""" + subjectGroupsTeacher: [SubjectGroupsTeacherResponse!]! +} + +"""""" +type StageSubjectGroupsByTeacherResponse { + """""" + stageSubjectGroups: [StageSubjectGroupTaskCount!]! + + """""" + stageSubjectGroupCount: Int! +} + +"""""" +type StageSubjectGroupsTaskCountBySubjectTeacherResponse { + """""" + stageSubjectGroupId: ID! + + """""" + stageSubjectGroup: StageSubjectGroup! + + """""" + stageGroupName: String! + + """""" + countNeedCheckTasks: Int! + + """""" + countUnreadMessages: Int! + + """""" + studentTaskIds: [ID!] + + """""" + containsMore3DaysNeedCheck: Boolean! + + """""" + containsMore7DaysNeedCheck: Boolean! + + """""" + countStudentIdsForCurrentStageSubjectGroup: Int! +} + +"""Итоговые оценки по предмету параллели""" +type StageSubjectStatisticsMarks { + """Идентификатор предмета параллели""" + stageSubjectId: ID! + + """Наименование предмета""" + subjectName: String! + + """Итоговые оценки за АП""" + marks: [AttestationPeriodStatisticsMark!]! + + """Годовые оценки (за экзамен, аттестационные в зависимости от настроек)""" + yearMarks: [YearStatisticsMark!]! +} + +"""Модель подгруппы гкпп""" +type StageSubjectSubgroup { + """""" + stageSubjectSubgroupId: ID! + + """""" + stageSubjectGroupId: ID! + + """""" + name: String! + + """""" + isDefault: Boolean! +} + +"""Модель подгруппы гкпп""" +type StageSubjectSubgroupForMarks { + """Подгруппа гкпп""" + stageSubjectSubgroup: StageSubjectSubgroup! + + """Студенты подгруппы""" + subgroupStudents: [SubgroupStudent!]! +} + +"""""" +type StatisticReportMutations { + """Сохранение пользовательских настроек по отчетам""" + saveReportUserSettings(reportUserSettingsInput: [ReportUserSettingInput!]!, reportName: String!, academicYearId: ID): Boolean + + """Сохранение отчетных периодов""" + saveReportPeriods(dateIntervals: [DateIntervalInput!]!): Boolean + + """Сохранение Отчетных периодов по параллелям для школы""" + saveSchoolReportPeriods(schoolReportPeriodsInput: SchoolReportPeriodsInput!): Boolean + + """Удаление Отчетных периодов""" + deleteReportPeriodSetById(reportPeriodSetId: UUID!): Boolean + + """Изменение флага включения "Тонкой настройки" отчетных периодов""" + saveReportPeriodsByStagesFlag(enabled: Boolean): Boolean + + """Отправляет отчет прилежности ученика родителям""" + sendStudentDiligenceReportToParent(studentId: UUID!): Boolean! +} + +"""""" +type StatisticReportQueries { + """Получение списка предметов для отчета по успеваемости""" + getStudyPeriodDailyStudentSubjects(startDate: DateTime!, endDate: DateTime!, stageId: Int, stageGroupId: Int, studentId: UUID): [StudyPeriodDailyStudentSubject!]! + + """Статистика по модулю, вызывается на конкретном модуле""" + getModuleStatisticsReport(goalId: Int!, currentRole: String): [ModuleStatistics!]! + + """Публичные метрики по заданию""" + getTaskPublicMetrics(schoolId: UUID!, taskId: Int!): TaskPublicMetrics! + + """Метрики на вкладке задания""" + getTaskCompletedMetrics(schoolId: UUID!, taskId: Int!): TaskCompletedMetrics! + + """Итоговые оценки для ученика""" + getStudyPeriodMarksByStudent(studentId: UUID!, academicYearId: ID, currentRole: String): [StudyPeriodMark!]! + + """Итоговые оценки для ученика. Выгрузка в Excel""" + downloadStudyPeriodMarksByStudentExcel(studentId: UUID!, reportDateTime: String!, academicYearId: ID, currentRole: String): ReportExcelFile! + + """Метод для получения умолчательного интервала дат для отчетов""" + getDateIntervalForReport: DateInterval! + + """""" + getDefaultDateIntervalForReportByUserId(userId: UUID!, academicYearId: ID): DateInterval + + """""" + getDefaultDateIntervalForReportByStageId(stageId: ID!, academicYearId: ID): DateInterval! @deprecated(reason: "Под удаление. EDU-77019") + + """""" + getDefaultDateIntervalForReportByStageIdNullable(stageId: ID!, academicYearId: ID): DateInterval + + """Не реализован""" + getStudentSchoolMetrics(studentSchoolMetricsInput: SchoolMonitoringInput): [StudentSchoolMetrics!]! + + """Возвращает параллели с доступными учебными периодами""" + getStagesWithStudyPeriods(reportName: String!, academicYearId: ID): [StageStudyPeriods]! + + """Оценки по предмету и параллели""" + getStudyPeriodsSubjectMarks(reportName: String!, academicYearId: ID, currentRole: String): StudyPeriodSubjectMarks! + + """Оценки по предмету и параллели загрузка в Excel""" + downloadStudyPeriodsSubjectMarksExcel(reportName: String!, reportDateTime: String!, academicYearId: ID, currentRole: String): ReportExcelFile! + + """Оценки по предмету""" + getStudyPeriodsSubjectSchoolMarks(reportName: String!, academicYearId: ID, currentRole: String): StudyPeriodSubjectSchoolMarks! + + """Оценки по предмету загрузка в Excel""" + downloadStudyPeriodsSubjectSchoolMarksExcel(reportName: String!, reportDateTime: String!, academicYearId: ID, currentRole: String): ReportExcelFile! + + """Оценки по учителю и параллели""" + getStudyPeriodsTeacherMarks(reportName: String!, subjectIds: [ID!], academicYearId: ID, currentRole: String): StudyPeriodTeacherMarks! + + """Оценки по учителю и параллели. Список предметов по школе и периодам""" + getStudyPeriodsSubjects(reportName: String!, academicYearId: ID): [StudyPeriodDailyStudentSubject!]! + + """Оценки по учителю и параллели загрузка в Excel""" + downloadStudyPeriodsTeacherMarksExcel(reportName: String!, reportDateTime: String!, transparent: Boolean!, subjectIds: [ID!], academicYearId: ID, currentRole: String): ReportExcelFile! + + """Мониторинг выполнения заданий учениками""" + getStudentsGoalLevels(goalId: Int!, stageSubjectGroupId: Int!, studyPeriodId: Int, currentRole: String): StudentsGoalsResults! + + """Мониторинг выполнения заданий учениками загрузка в Excel""" + downloadStudentsGoalLevelsExcel(goalId: Int!, stageSubjectGroupId: Int!, studyPeriodId: Int, reportDateTime: String!, currentRole: String): ReportExcelFile! + + """Мониторинг выполнения заданий учениками с состояниями""" + getModuleStudentsTaskStatus(goalId: Int!, stageSubjectGroupId: Int!, goalLevelId: Int!, studyPeriodId: Int, currentRole: String): StudentsGoalsTaskStatus! + + """Мониторинг выполнения заданий учениками с состояниями загрузка в Excel""" + downloadModuleStudentsTaskStatusExcel(goalId: Int!, stageSubjectGroupId: Int!, goalLevelId: Int!, studyPeriodId: Int, reportDateTime: String!, currentRole: String): ReportExcelFile! + + """ + Отчет "Итоговые оценки для классного руководителя" по ученикам и всем предметам + """ + getStudentsFinalMarksForFormMaster(periodStartDate: Date!, periodEndDate: Date!, stageGroupId: Int!, academicYearId: ID, currentRole: String): StudentFinalMarksForFormMasterModel! + + """ + Отчет "Итоговые оценки для классного руководителя" по ученикам и всем предметам. Выгрузка в Excel. + """ + downloadStudentsFinalMarksForFormMaster(periodStartDate: Date!, periodEndDate: Date!, stageGroupId: Int!, reportDateTime: String!, academicYearId: ID, currentRole: String): ReportExcelFile! + + """ + Список классов для завуча, классного руководителя или консультирующего учителя + """ + getStageGroupsBySchoolAndFormMasterOrConsultingTeacher(academicYearId: ID, currentRole: String): [StageGroupInfo!]! + + """Форма достигнутого уровня по модулю""" + getStudentAchievedGoals(goalId: Int!, studentId: UUID!, currentRole: String): [StudentGoalAchievement!]! + + """Отчетные периоды""" + getReportPeriods: DateIntervals + + """""" + getReportPeriodsByStageId(stageId: ID!): DateIntervals + + """Школьные периоды для фильтрации""" + getPeriodsForSelectorByStage(stageId: ID!, academicYearId: ID): [Selector]! + + """""" + getPeriodsForSelectorByUserId(userId: UUID!, academicYearId: ID): [Selector]! + + """Аттестационные периоды""" + getAttestationPeriodsForSelectorByStage(stageId: ID!, academicYearId: ID): [SelectorByAttestationPeriod]! @deprecated(reason: "Под удаление. EDU-44903") + + """""" + getTasksOnCheckFeatureFlagsPerSchool: [FeatureFlagsPerSchool!]! @deprecated(reason: "Под удаление. EDU-44903") + + """""" + getTasksOnCheckForMoreThan7DaysDetailedFeatureFlagsPerSchool: [FeatureFlagsPerSchool!]! @deprecated(reason: "Под удаление. EDU-44903") + + """""" + getStudyPeriodMarksForTeacherFeatureFlagsPerSchool: [FeatureFlagsPerSchool!]! @deprecated(reason: "Под удаление. EDU-44903") + + """""" + getStudyPeriodMarksForStudentFeatureFlagsPerSchool: [FeatureFlagsPerSchool!]! @deprecated(reason: "Под удаление. EDU-44903") + + """""" + getModuleProgressBySubjectsFeatureFlagsPerSchool: [FeatureFlagsPerSchool!]! @deprecated(reason: "Под удаление. EDU-44903") + + """""" + getAcademicPerformanceForTeacherFeatureFlagsPerSchool: [FeatureFlagsPerSchool!]! @deprecated(reason: "Под удаление. EDU-44903") + + """""" + getAcademicPerformanceForStudentFeatureFlagsPerSchool: [FeatureFlagsPerSchool!]! @deprecated(reason: "Под удаление. EDU-44903") + + """""" + getAcademicPerformanceAllPlansFeatureFlagsPerSchool: [FeatureFlagsPerSchool!]! @deprecated(reason: "Под удаление. EDU-44903") + + """""" + getTasksMonitoringFeatureFlagsPerSchool: [FeatureFlagsPerSchool!]! @deprecated(reason: "Под удаление. EDU-44903") + + """""" + getMarksGroupFeatureFlagsPerSchool: [FeatureFlagsPerSchool!]! @deprecated(reason: "Под удаление. EDU-44903") + + """""" + getMarkDetailsForTeacherFeatureFlagsPerSchool: [FeatureFlagsPerSchool!]! @deprecated(reason: "Под удаление. EDU-44903") + + """""" + getStudentsFinalMarksForFormMasterFeatureFlagsPerSchool: [FeatureFlagsPerSchool!]! @deprecated(reason: "Под удаление. EDU-44903") + + """""" + getMarkDetailsForStudentFeatureFlagsPerSchool: [FeatureFlagsPerSchool!]! @deprecated(reason: "Под удаление. EDU-44903") + + """""" + getStatisticModuleTabFlagsPerSchool: [FeatureFlagsPerSchool!]! @deprecated(reason: "Под удаление. EDU-44903") + + """""" + getStatisticTaskTabFlagsPerSchool: [FeatureFlagsPerSchool!]! @deprecated(reason: "Под удаление. EDU-44903") + + """""" + getTeacherTrainingsReportFeatureFlagsPerSchool: [FeatureFlagsPerSchool!]! @deprecated(reason: "Под удаление. EDU-44903") + + """""" + getTeacherTrainingsDetailedReportFeatureFlagsPerSchool: [FeatureFlagsPerSchool!]! @deprecated(reason: "Под удаление. EDU-44903") + + """""" + getStatisticsEntrantFeatureFlagsPerSchool: [FeatureFlagsPerSchool!]! @deprecated(reason: "Под удаление. EDU-44903") + + """""" + getOverviewFeatureFlagsPerSchool: [FeatureFlagsPerSchool!]! @deprecated(reason: "Под удаление. EDU-44903") + + """""" + getOverviewAdminFeatureFlagsPerSchool: [FeatureFlagsPerSchool!]! @deprecated(reason: "Под удаление. EDU-44903") + + """""" + getTeacherMetricsFeatureFlagsPerSchool: [FeatureFlagsPerSchool!]! + + """Обзор обучения учителей""" + getTeacherTrainings(currentRole: String): TeacherTraining! + + """Обзор обучения учителей. Выгрузка в Excel.""" + downloadTeachersTrainingExcel(reportDateTime: String!, currentRole: String): ReportExcelFile! + + """Обзор обучения учителей детальный""" + getTeacherTrainingsDetailed(currentRole: String): TeacherTrainingDetailed! + + """Обзор обучения учителей детальный. Выгрузка в Excel.""" + downloadTeachersTrainingDetailedExcel(reportDateTime: String!, currentRole: String): ReportExcelFile! + + """Обзор обучения учителей 'Персонализированное образование'""" + getTeacherPersonalTrainings(currentRole: String): TeacherPersonalTraining! + + """Обзор обучения учителей 'Персонализированное образование' детальный.""" + getTeacherTrainingsPersonalDetailed(currentRole: String): TeacherPersonalTrainingDetailed! + + """ + Обзор обучения учителей 'Персонализированное образование'. Выгрузка в Excel. + """ + downloadTeachersPersonalTrainingExcel(reportDateTime: String!, currentRole: String): ReportExcelFile! + + """ + Обзор обучения учителей 'Персонализированное образование' детальный. Выгрузка в Excel. + """ + downloadTeachersPersonalTrainingDetailedExcel(reportDateTime: String!, currentRole: String): ReportExcelFile! + + """Обзор обучения учителей 3ья волна""" + getTeacherTrainings3rdWave(learningProgramDirectionId: Int!, currentRole: String): TeacherTraining3rdWave! @deprecated(reason: "Использовать getTeacherTrainings3rdWaveDetailedV2") + + """""" + getTeacherTrainings3rdWaveDetailed(learningProgramDirectionId: Int!): TeacherTraining3rdWaveDetailed! + + """""" + getTeacherTrainings3rdWaveDetailedV2(periodStartDate: Date, periodEndDate: Date, learningProgramDirectionId: Int!, currentRole: String): TeacherTraining3rdWaveDetailed! + + """ + Получение списка направлений по школе-организатору с именами программ и предметов для отчета Обзор обучения учителей + """ + getLearningProgramDirectionsForReport: [LearningProgramDirectionViewForReport!]! + + """Обзор обучения учителей 3ья волна. Выгрузка в Excel.""" + downloadTeacherTrainings3rdWave(learningProgramDirectionId: Int!, reportDateTime: String!, currentRole: String): ReportExcelFile! @deprecated(reason: "Использовать downloadTeacherTrainings3rdWaveDetailedV2") + + """""" + downloadTeacherTrainings3rdWaveDetailed(learningProgramDirectionId: Int!, reportDateTime: String!): ReportExcelFile! @deprecated(reason: "Использовать downloadTeacherTrainings3rdWaveDetailedV3 добавлен параметр showDate: Boolean!") + + """""" + downloadTeacherTrainings3rdWaveDetailedV2(periodStartDate: Date, periodEndDate: Date, learningProgramDirectionId: Int!, reportDateTime: String!): ReportExcelFile! + + """""" + downloadTeacherTrainings3rdWaveDetailedV3(periodStartDate: Date, periodEndDate: Date, learningProgramDirectionId: Int!, showDate: Boolean!, reportDateTime: String!, currentRole: String): ReportExcelFile! + + """ + Получение флага "Уровень видимости данных в синхронных отчетах" + """ + getReportsDataAccessLevelFlag: ReportsDataAccessLevel! + + """ + Настройка отчетных периодов по умолчанию для школ и параллелей "Тонкая настройка" + Получение флага включения "Тонкой настройки" отчетных периодов + """ + getReportPeriodsByStagesFlag: Boolean! + + """Получение Отчетных периодов по параллелям для школы""" + getSchoolReportPeriods: [SchoolReportPeriods!]! + + """Фильтр отчета 'Обзор работы учителей'""" + getTeacherSchoolMetricsFilter(startDate: Date!, endDate: Date!, currentRole: String): [TeacherSchoolMetricsFilter!]! + + """Получение данных отчета 'Обзор работы учителей' с фильтром""" + getTeacherSchoolMetricsFiltered(teacherSchoolMetricsInput: TeacherSchoolMetricsInput, currentRole: String): [TeacherSchoolMetrics!]! + + """'Обзор работы учителей'. Выгрузка в Excel.""" + getTeacherSchoolMetricsExcelFiltered(teacherSchoolMetricsInput: TeacherSchoolMetricsExcelInput!, reportDateTime: String!, currentRole: String): ReportExcelFile! + + """Значение флага отчёта о прохождении""" + getStudentsPlanExecutionPerSchool: [FeatureFlagsPerSchool!]! + + """График кол-ва непроверенных заданий""" + getTeacherTasksReviewedMetrics(teacherTasksReviewedMetricsInput: SchoolMonitoringInput, currentRole: String!): [TeacherSchoolMetrics!]! + + """Обзор работы пользователей платформы. Выгрузка в Excel""" + downloadSchoolMonitoringExcel(schoolMonitoringInput: SchoolMonitoringInput, reportDateTime: String!, currentRole: String): ReportExcelFile! + + """ + Обзор работы пользователей платформы. Список учителей/учеников которые 'Заходили на платформу'. + """ + getSchoolMonitoringDetailed(schoolId: UUID!, date: Date!, isTeacher: Boolean!): [String!]! + + """ + Обзор работы пользователей платформы. Список учителей/учеников которые 'Заходили на платформу'. Выгрузка в Excel + """ + downloadUsersLoggingFioReport(schoolId: UUID!, date: Date!, isTeachers: Boolean!, reportDateTime: String!): ReportExcelFile! + + """Возвращает список отчетов, доступных пользователю""" + getReportList(currentRole: String!): [ReportGroup]! + + """Возвращает данные для отчета прилежности учеников""" + getStudentsDiligence(stageIds: [ID!]!, stageGroupIds: [ID!]!, stageSubjectGroupIds: [ID!]!, teacherIds: [UUID!]!, subjectIds: [ID!]!): [StudentDiligence!]! + + """Отчет о завершенных модулях по ученикам Excel""" + downloadStudentsCompletedGoalsReport(stageIds: [ID!]!, stageGroupIds: [ID!]!, stageSubjectGroupIds: [ID!]!, teacherIds: [UUID!]!, subjectIds: [ID!]!, modeLevel4: Boolean): ReportExcelFile! + + """Отчет о завершенных модулях по ученикам""" + loadStudentsCompletedGoalsReport(stageIds: [ID!]!, stageGroupIds: [ID!]!, stageSubjectGroupIds: [ID!]!, teacherIds: [UUID!]!, subjectIds: [ID!]!, studentIds: [ID!]): [StudentCompletedGoalsInfo!]! +} + +"""Данные по текущим оценкам""" +type StatisticsCurrentMarksData { + """Модель "Учителя по предмету" как пользователя""" + userAccountOfSubjectTeacher: UserAccount! + + """Текущие оценки""" + marks: [EJournalStudentMark!]! + + """Кол-во пропущенных уроков за период""" + missedLessons: Int! + + """Общее кол-во уроков за период""" + lessonsNumber: Int! +} + +"""Ответ на запрос текущих оценок""" +type StatisticsCurrentMarksDataResponse { + """Данные""" + data: StatisticsCurrentMarksData + + """Успешность операции""" + isSuccess: Boolean! + + """Ошибки""" + error: StatisticsMarksError +} + +"""Модель запроса текущих оценок""" +input StatisticsCurrentMarksRequest { + """Идентификатор пользователя ученика""" + userId: ID! + + """Идентификатор предмета параллели""" + stageSubjectId: ID! + + """Идентификатор АП""" + periodId: ID! + + """Идентификатор типа АП""" + periodTypeId: ID! +} + +"""Коды ошибок""" +enum StatisticsMarkErrorCode { + """Группы студентов не найдены""" + NO_STAGE_GROUPS_FOUND + + """Аттестационные периоды не найдены""" + NO_ATTESTATION_PERIODS_FOUND +} + +"""Ответ данных об уроке""" +type StatisticsMarkLesson { + """Дата урока""" + date: Date! + + """Время начала урока""" + lessonStart: Time! + + """Время окончания урока""" + lessonEnd: Time! +} + +"""Предметы параллели""" +type StatisticsMarkStageSubject { + """Идентификатор предмета параллели""" + stageSubjectId: ID! + + """Наименование предмета""" + subjectName: String! +} + +"""Данные по финальным оценкам""" +type StatisticsMarksData { + """Предметы параллели""" + stageSubjects: [StatisticsMarkStageSubject!]! + + """Типы итоговых оценок""" + markTypes: [EJournalFinalStudentMarkType!]! + + """Итоговые оценки по графикам аттестационных периодов""" + attestationPeriodSetMarks: [AttestationPeriodSetStatisticsMarks!]! +} + +"""Ответ на запрос финальных оценок""" +type StatisticsMarksDataResponse { + """Данные""" + data: StatisticsMarksData + + """Успешность операции""" + isSuccess: Boolean! + + """Ошибки""" + error: StatisticsMarksError +} + +"""Модель ошибки""" +type StatisticsMarksError { + """Код ошибки""" + errorCode: StatisticsMarkErrorCode! +} + +"""""" +type StatisticsMarksQueries { + """Запрос финальных оценок для статистики""" + getStatisticsMarks(statisticsMarksRequest: StatisticsMarksRequest!): StatisticsMarksDataResponse! + + """Запрос текущих оценок""" + getStatisticsCurrentMarks(statisticsCurrentMarksRequest: StatisticsCurrentMarksRequest!): StatisticsCurrentMarksDataResponse! + + """Запрос списка академических годов школы""" + getAcademicYears: [AcademicYear!]! + + """Запрос данных по классу""" + getStageGroupsV2ForStatisticsMarks(academicYearId: ID!): [StageGroupV2!]! + + """Показывать ли пользователю страницу статистики""" + isStatisticsEnabledForUser: Boolean! + + """Запрос данных урока""" + getLesson(lessonId: ID!): StatisticsMarkLesson! +} + +"""Модель запроса финальных оценок""" +input StatisticsMarksRequest { + """Идентификатор пользователя ученика""" + userId: ID! + + """Идентификатор учебного года""" + academicYearId: ID! + + """Идентификатор предмета параллели""" + stageSubjectIds: [ID!]! +} + +"""""" +type StatusAndTaskCount { + """""" + taskStatus: TaskStatusEnum! + + """""" + taskCount: Int! +} + +"""""" +type StatusCount { + """""" + status: String! + + """""" + count: Int +} + +"""""" +type StatusModulesReport { + """""" + status: String! + + """""" + setStatusTime: DateTime! +} + +"""""" +type StringBooleanMapEntry { + """""" + key: String! + + """""" + value: Boolean +} + +"""""" +type Student { + """""" + id: ID! + + """""" + user: User! + + """""" + personalPerformance: String! @deprecated + + """""" + goals: [PersonalGoal!]! @deprecated + + """""" + softSkills: [SoftSkillPower!]! + + """""" + digitalSkills: [SoftSkillPower!]! + + """""" + school: SafeSchool! + + """""" + class: StageGroup! + + """""" + userProfile: UserProfile! +} + +""" +Пара <идентификатор студента, идентифкатор задания> в рамках миграции этому студенту будет зачтено это задание +""" +input Student2TaskPairForAcceptInput { + """edu_power_global.students.student_id""" + studentId: UUID! + + """edu_power_content.tasks.task_id""" + taskId: ID! +} + +"""""" +type StudentAcademicPerformance { + """""" + stageGroupName: String! + + """""" + stageId: Int! + + """""" + stageSubjectGroupId: Int! + + """""" + stageSubjectSubgroupStudentId: Int! + + """""" + studentId: UUID! + + """""" + studentUserId: UUID! + + """""" + studentName: String! + + """""" + subjectId: Int! + + """""" + subjectName: String! + + """""" + teacherName: String! + + """""" + teacherId: UUID! + + """""" + studyPeriodId: Int! + + """""" + studyPeriodName: String + + """""" + markValue: Int! + + """""" + percent: Int! + + """""" + subjectModuleSize: Int! + + """""" + studentModuleInfoList: [StudentModuleStatus!]! + + """""" + finalMark: Int! + + """""" + goalLevelPercent: Int! + + """""" + levelPercentDetails: [StudentGoalLevelPercentDetail!] + + """""" + testPercent: Int! + + """""" + testPercentDetails: [StudentTestPercentDetail!] +} + +"""Статистика. Успеваемость учеников расширенная""" +type StudentAcademicPerformanceExpanded { + """""" + stageGroupName: String! + + """""" + stageId: Int! + + """""" + stageSubjectGroupId: Int! + + """""" + stageSubjectGroupName: String + + """""" + stageSubjectSubgroupStudentId: Int! + + """""" + studentId: UUID! + + """""" + studentUserId: UUID! + + """""" + studentName: String! + + """""" + subjectId: Int! + + """""" + subjectName: String! + + """""" + teacherName: String! + + """""" + teacherId: UUID! + + """""" + studyPeriodId: Int! + + """""" + studyPeriodName: String + + """""" + markValue: Int! + + """""" + percent: Int! + + """""" + goalNumber: Int! + + """""" + goalName: String! + + """""" + goalId: Int! + + """""" + goalAvatarUrl: String + + """""" + startDate: Date! + + """""" + endDate: Date! + + """""" + isHardEndDate: Boolean! + + """""" + daysBeforeEndDate: Int + + """""" + plan: Int! + + """""" + maxArchLevel: String! + + """""" + goalStatus: Int! + + """""" + achievedTime: DateTime + + """""" + playListCount: Int + + """""" + mandatoryCount: Int + + """""" + taskSelectedCount: Int + + """""" + taskCommittedCount: Int + + """""" + hidePercent: Boolean! + + """""" + goalLevelOneTaskCnt: Int + + """""" + goalLevelTwoTaskCnt: Int + + """""" + goalLevelThreeTaskCnt: Int + + """""" + goalLevelFourTaskCnt: Int +} + +"""""" +type StudentAcademicPerformanceExpandedV2 { + """""" + stageGroupName: String! + + """""" + stageId: Int! + + """""" + stageSubjectGroupId: Int! + + """""" + stageSubjectGroupName: String + + """""" + stageSubjectSubgroupStudentId: Int! + + """""" + studentId: UUID! + + """""" + studentUserId: UUID! + + """""" + studentName: String! + + """""" + subjectId: Int! + + """""" + subjectName: String! + + """""" + teacherName: String! + + """""" + teacherId: UUID! + + """""" + studyPeriodId: Int! + + """""" + studyPeriodName: String + + """""" + markValue: Int! + + """""" + percent: Int! + + """0 - задания модулей, 1 - контрольные работы""" + workType: Int! + + """""" + workNumber: Int! + + """""" + workName: String! + + """""" + workId: Int! + + """""" + goalAvatarUrl: String + + """""" + workStartDate: Date! + + """""" + workEndDate: Date! + + """""" + isHardEndDate: Boolean + + """""" + daysBeforeEndDate: Int + + """""" + plan: Int + + """""" + maxArchLevel: String + + """""" + goalStatus: Int + + """""" + achievedTime: DateTime + + """""" + playListCount: Int + + """""" + mandatoryCount: Int + + """""" + taskSelectedCount: Int + + """""" + taskCommittedCount: Int + + """""" + hidePercent: Boolean! + + """""" + finalMark: Int! + + """""" + workPercent: Int! + + """""" + goalLevelOneTaskCnt: Int + + """""" + goalLevelTwoTaskCnt: Int + + """""" + goalLevelThreeTaskCnt: Int + + """""" + goalLevelFourTaskCnt: Int +} + +"""Информация о пользователе как ученике школы""" +type StudentAccount { + """общая информация аккаунта пользователя""" + userInfo: UserAccount! + + """идентификатор студента""" + studentId: ID! + + """статус роли ученика""" + roleStatus: RoleStatus! + + """название роли""" + role: ROLES! + + """ + идентификатор школы, в которой числится ученик + Фактически поле является non-nullable. Добавлено как nullable из-за ограничений расширения gql-схемы + """ + schoolId: ID + + """общая информация о школе, в которой числится ученик""" + schoolInfo: SafeSchool! + + """идентификатор текущего класса ученика""" + stageGroupId: ID + + """информация о текущем классе ученика""" + stageGroupInfo: StageGroupInfo + + """состояние ученика""" + studentStatus: StudentStatus + + """дата выпуска ученика из учебного заведения""" + graduationDateTime: DateTime +} + +"""Результат постраничного запроса списка пользователей-учеников""" +type StudentAccountList { + """информация об учениках""" + studentAccounts: [StudentAccount!]! + + """общее количество записей в БД, удовлетворяющих запросу""" + count: Int! +} + +"""Текстовый ответ ученика""" +type StudentAnswer { + """PK""" + id: ID! + + """Код studentId""" + studentId: ID! + + """Задание""" + taskId: ID! + + """ответ (текст, json, etc)""" + answer: String! + + """Когда ученик поменял ответ""" + answerModified: DateTime + + """Когда был отправлен ответ""" + created: DateTime! + + """список файлов""" + files: [File!]! + + """статус: на проверке, не принято, принято""" + status: AnswerStatusEnum! + + """Когда поменялся статус""" + statusModified: DateTime + + """тип ответа (текст, SurveyJs, ЭОР)""" + type: StudentAnswerType! + + """Автор ответа""" + author: User! + + """Проверяющий пользователь""" + reviewUser: User + + """""" + student: Student! + + """Задание в рамках которого ответ""" + task: Task! + + """Информация о попытке сдать проект с этим ответом""" + attempt: StudentGoalAttempt + + """Был ли ли модуль внеплановым во время сохранения ответа""" + plannedGoal: Boolean +} + +"""""" +type StudentAnswerComment { + """Идентификатор ответа студента""" + studentAnswerId: ID! + + """Текст комментария""" + comment: String! +} + +"""""" +enum StudentAnswerType { + """Для всех ответов, сохраненных ранее без типа""" + UNKNOWN + + """Текстовый ответ (с форматированием)""" + TEXT + + """Ответ на тест SurveyJs (JSON)""" + TEST_JSON + + """Результат выполнения задания ЭОР (РосУчебник, Физикон...)""" + EOR_RESULT +} + +"""Посещаемость по предметам""" +type StudentAttendanceBySubject { + """Предмет""" + subjectId: ID! + + """Посещаемость в прошедших периодах""" + pastPeriodAttendance: [StudentPastPeriodAttendance]! + + """Посещаеость в текущем периоде""" + currentPeriodAttendance: [StudentLessonAttendance]! +} + +"""Статистика посещаемости уроков учеником""" +type StudentAttendanceStatistic { + """Общее количество уроков за период""" + numberOfLessons: Int! + + """Количество посещённых занятий WAS_LATE + VISITED""" + numberOfAttendedLessons: Int! + + """ + Статистика посещаемости уроков в разрезе состояний (статусов) VisitJournalCellValueEnum + """ + stateStatistics: [AttendanceStateStatistics!]! +} + +"""""" +type StudentAttributes { + """""" + studentId: ID! + + """""" + schoolId: ID! + + """""" + userId: ID! + + """""" + stageGroupId: ID! + + """""" + createTs: DateTime! + + """""" + isActive: Boolean! + + """""" + graduationTs: DateTime! @deprecated(reason: "refactor") + + """""" + isGraduate: Boolean! @deprecated(reason: "refactor") + + """""" + studentDismissInfo: StudentDismissInfo @deprecated(reason: "Use getDismissInfoByStudentId()") +} + +"""Жалоба на буллинг""" +input StudentBullyingComplaintInput { + """Тип жалобы""" + bullyingComplaintType: BullyingComplaintTypeEnum! + + """Анонимно ли была подана жалоба""" + isAnonymous: Boolean! + + """Сообщение к обращению""" + message: String +} + +"""Проверка студент/студент (взаимопроверка)""" +type StudentByStudentCheckInfo { + """ + Другой ученик/студент, проверяющий Задание (может быт пустым если анонимная провека) + """ + reviewUser: User + + """оценивать мне""" + reviewByMe: Boolean! @deprecated(reason: "unused. Will be deleted in 0.13") + + """кого оценивать (может быт пустым если анонимная провека)""" + assigneeUser: User @deprecated(reason: "unused. Will be deleted in 0.13") + + """код ответа""" + answerId: ID! @deprecated(reason: "unused. Will be deleted in 0.13") +} + +""" +Информация об оцененных заданиях в контексте ГКПП(Группы класса по предмету) +""" +type StudentCheckedTaskInfo { + """Подробная информация о студенте, выполнившем задания""" + user: User! + + """Необходимая информация о заданиях студента, выполнившем задания""" + studentTaskAndTasks: [StudentTaskAndTask]! + + """ + Количество проверенных заданий для данного студента в рамках данной ГКПП + """ + tasksCount: Int! + + """ + Количество студентов в рамках данной ГКПП, у которых есть проверенные задания за выбраннный период. + """ + studentsCount: Int! + + """""" + stageGroup: StageGroup! + + """""" + subject: Subject! + + """""" + stageSubjectGroupName: String! +} + +"""для получения данных по проверенным заданиям включая фильтр модулей""" +type StudentCheckedTasksWithGoalsFilter { + """""" + studentCheckedTaskInfoModels: [StudentCheckedTaskInfo]! + + """""" + goalsFilter: [GoalsFilter]! +} + +"""Процесс код-ревью студенческого проекта""" +type StudentCodeReview { + """ID процесса код-ревью модуля студента""" + studentCodeReviewId: ID! + + """ID студенческого модуля по которому проводится код-ревью""" + studentGoalId: ID! + + """ID студента проводящего код-ревью""" + reviewerStudentId: UUID! + + """Пользователь-ревьювер""" + user: User! + + """ + Финальная оценка проекта после код-ревью + {null} - оценка не проведена + {true} - оценка код-ревью пройдена успешна + {false} - оценка код-ревью провалена + """ + finalMark: Boolean + + """ + Время, когда установлена финальная оценка по проекту + {null} - если ревьювер еще не установил финальную оценку + """ + markTime: DateTime + + """Количество комментариев в GitLab по код-ревью""" + reviewerCommentsCount: Int + + """Этапы код-ревью""" + codeReviewRounds: [CodeReviewRound!]! +} + +"""Процесс код-ревью с финальной(усредненной) оценкой""" +type StudentCodeReviewResult { + """Информация о проверках код-ревью студенческого проекта""" + studentCodeReviews: [StudentCodeReview!]! + + """ + Усредненная оценка + {null} - оценка не проведена (не завершены код-ревью процессы) + {COMPLETELY_AGREE} - пройдено успешно + {COMPLETELY_DISAGREE} - провалено + """ + averageMark: CodeReviewMark +} + +"""""" +enum StudentCodeReviewStatus { + """Доступен""" + AVAILABLE + + """В ревью раунд 1""" + IN_REVIEW_ROUND_1 + + """Ожидает начала раунда 2""" + WAIT_FOR_ROUND_2 + + """В ревью раунд 2""" + IN_REVIEW_ROUND_2 + + """Завершен""" + COMPLETED + + """Недоступен""" + UNAVAILABLE + + """Капитуляция проверяемого студента""" + VERIFIABLE_CAPITULATION +} + +""" +Процессы код-ревью студенческого проекта, с количеством завершенных Round1 и Round2 +""" +type StudentCodeReviewsWithCountRound { + """Процесс код-ревью студенческого проекта""" + studentCodeReviews: [StudentCodeReview!]! + + """Количество завершенных Round1""" + countRound1: Int! + + """Количество завершенных Round2""" + countRound2: Int! + + """ + Получение информации по настройкам code review проекта или null проверки code review нет + """ + codeReviewsInfo: CodeReviewChecksInfo +} + +""" +Процессы код-ревью студенческого проекта, проводимые другими студентами, с датой начала раунда 2 +""" +type StudentCodeReviewsWithPlaneSecondRound { + """Процесс код-ревью студенческого проекта""" + studentCodeReviews: [StudentCodeReview!]! + + """Дата начала раунда 2""" + secondRoundStartDate: Date! +} + +"""Информация о завершенных модулях""" +type StudentCompletedGoalsInfo { + """идентификатор ученика""" + studentId: UUID! + + """фио ученика""" + fio: String! + + """идентификатор группы ученика""" + stageGroupId: ID! + + """название группы ученика""" + stageGroupName: String! + + """кол-во модулей с целевым уровнем 3""" + targetLevel3: Int! + + """кол-во закрытых модулей с уровнем 2.5 у оторых целевой уровень 3""" + achievedLevel25: Int! + + """ + % модулей с достигнутым уровнем 2.5 от количества модулей с целевым уровнем 3.0 + """ + achievedLevel25Percent: Float! + + """кол-во закрытых модулей с уровнем 3 у оторых целевой уровень 3""" + achievedLevel3: Int! + + """ + % модулей с достигнутым уровнем 3 от количества модулей с целевым уровнем 3.0 + """ + achievedLevel3Percent: Float! + + """Количество модулей, имеющих задания уровня 4.0""" + goalsWithTasksAtLevel4: Int! + + """кол-во закрытых модулей с уровнем 4""" + achievedLevel4: Int! + + """ + % модулей с достигнутым уровнем 4.0 от модулей, имеющих задания уровня 4.0 + """ + achievedLevel4Percent: Float! +} + +"""Информация о попытке прохождения курса""" +type StudentCourseAttemptStatistic { + """Дата и время попытки""" + resultDate: DateTime! + + """Процент пройденного""" + finalPercentage: Int! + + """Количество баллов полученное за попытку""" + pointProject: Int! + + """Результат попытки""" + completionResultStatus: CompletionResultStatus! +} + +"""Курс назначенный на студента""" +type StudentCourseModel { + """Идентификатор записи о курсе студента""" + studentCourseId: ID! + + """Идентификатор локального курса""" + localCourseId: ID! + + """Идентификатор студента""" + studentId: UUID! + + """Количество повторных прохождения курса""" + retryCount: Int + + """Статус курса""" + courseStatus: CourseStatus + + """Кол-во набранных очков за курс""" + finalPoint: Int + + """Процент завершения курса""" + finalPercentage: Int + + """Флаг, определяющий актуальность курса для студента""" + isActual: Boolean +} + +"""Процент соответствия и оценка""" +type StudentCriteriaPercent { + """Процент соответствия""" + percent: Int! + + """Оценка соответствующая проценту соответствия""" + value: CriteriaRecommendedValue! +} + +"""Оценка по критерию""" +type StudentCriteriaValue { + """""" + studentCriteriaValueId: ID! + + """Идентификатор критерия""" + criteriaId: ID! + + """Идентификатор ученика""" + studentId: ID! + + """Степень соответствия критерию""" + criteriaValue: CriteriaValue! + + """Подтвержденное соответствие критерию""" + isConfirmed: Boolean! + + """""" + createdTs: DateTime! + + """""" + updatedTs: DateTime + + """""" + confirmedTs: DateTime +} + +"""""" +input StudentCriteriaValueInput { + """Идентификатор критерия""" + criteriaId: ID! + + """Идентификатор ученика""" + studentId: ID + + """Значение соответствия""" + criteriaValue: CriteriaValue! +} + +"""""" +type StudentCurrentLessonCWorkHWork { + """""" + lessonsCompact: StudentLessonCompact! + + """""" + homework: HomeworkInfo +} + +"""Дашборд ученика""" +type StudentDashboard { + """ + Модули с Запланированными заданиями в календаре ученика на сегодня и завтра + """ + modulesWithPlanedTasks: [StudentModule!]! + + """Контрольные работы на сегодня и завтра""" + personalControlWorks: [PersonalControlWork!]! + + """ + Индикатор наличия загруженного расписания для данной школы и учебного года + """ + eventsUploaded: Boolean! + + """Информация о следующем "учебном дне" (день на который назначены уроки)""" + activeLearningDayLessonsInfo: ActiveLearningDayLessonsInfo! + + """Статистика достигнутых навыков ученика(общее/за день)""" + softSkillDayProgress: [SoftSkillPower!]! +} + +"""Модель для дневника ученика""" +type StudentDiary { + """перечень уроков""" + lessons: [StudentDiaryItem!]! + + """""" + events: [StudentDiaryEvent!]! +} + +"""Элемент события для дневника ученика""" +type StudentDiaryEvent { + """Идентификатор события""" + id: ID! + + """Название события""" + name: String! + + """Описание события""" + description: String + + """Дата и время начала события""" + startTime: DateTime! + + """Дата и время окончания события""" + endTime: DateTime! + + """Признак события на весь день""" + allDayEvent: Boolean! + + """Местонахождение (локация)""" + location: String! + + """Категория события""" + calendarEventCategory: CalendarEventCategory + + """Тип события""" + eventType: CalendarEventType + + """Идентификатор типа групп, которые могут быть участниками события""" + participantGroupTypeId: UUID + + """Идентификатор пользователя - создателя события""" + creatorId: UUID + + """Правило для повторяющегося события""" + recurrenceRule: String + + """До какого числа действует правило для повторяющегося события""" + recurrenceEndTs: DateTime + + """ + Идентификатор основного повторяющегося события для события-исключения из правила + """ + parentCalendarEventId: UUID + + """Временная метка создания события""" + createdTs: DateTime +} + +"""Модель домашней работы для дневника""" +type StudentDiaryHomework { + """Идентификатор домашней работы""" + homeworkId: ID! @deprecated(reason: "Нет в V4") + + """Текстовая заметка к домашней работе""" + note: String @deprecated(reason: "Превращен в массив в V4") + + """Заметки к домашней работе""" + notes: [LessonPlanNote!]! + + """Количество заданий в рамках домашней работы""" + numberOfTasks: Int! + + """Сумма трудозатрат""" + amountOfLaborCost: Int! + + """Статус выполнения домашних работ""" + completed: Boolean +} + +"""Элемент дневника ученика, отражающий урок или другое событие""" +type StudentDiaryItem { + """Идентификатор урока""" + lessonId: ID! + + """Номер элемента в дневнике (урока)""" + number: String! + + """Название (номер) кабинета""" + classRoomName: String! + + """Дата и время начала""" + start: DateTime! + + """Дата и время окончания""" + end: DateTime! + + """Предмет""" + subject: Subject! + + """Оценки, которые получил ученик на уроке""" + marks: [StudentDiaryMark!]! + + """Домашняя работа""" + homeworks: [StudentDiaryHomework!]! + + """Классные работы на уроке""" + lessonPlan: StudentDiaryLessonPlan! + + """Признак контрольной на уроке""" + hasControlWork: Boolean! + + """Тип посещения урока""" + visitJournalValue: VisitJournalCellValueEnum! + + """Признак online урока""" + onlineLesson: Boolean! + + """Модуль по предмету, соответствующий плану""" + module: StudentDiaryModule + + """Комментарии учителя""" + comments: [StudentDiaryLessonComment]! +} + +"""Активность на уроке для оценок дневника""" +type StudentDiaryLearningActivity { + """Название активности""" + name: String! + + """Вес активности""" + weight: Float! +} + +"""Модель наиболее длительной домашней работы в дневнике ученика""" +type StudentDiaryLengthyHomework { + """Идентификатор урока""" + lessonId: ID! + + """Дата начала урока""" + lessonStartDateTime: DateTime! + + """Предмет""" + subject: Subject! + + """Домашняя работа""" + homework: StudentDiaryHomework! +} + +"""Модель комментария учителя в рамках урока""" +type StudentDiaryLessonComment { + """Идентификатор комментария для урока""" + id: ID! + + """Идентификатор учителя""" + teacherId: ID! + + """ФИО учителя""" + teacherFullName: String! + + """URL аватара учителя""" + teacherAvatarUrl: String! + + """Комментарий""" + comment: String! +} + +"""Модель классной работы на уроке для дневника""" +type StudentDiaryLessonPlan { + """Идентификатор плана""" + id: ID + + """Название плана""" + name: String + + """Комментарий к классной работе""" + note: String @deprecated(reason: "Превращен в массив в V4") + + """Заметки к домашней работе""" + notes: [LessonPlanNote!]! + + """Количество заданий в рамках классной работы""" + numberOfTasks: Int! + + """Сумма трудозатрат в рамках классной работы""" + amountOfLaborCost: Int! + + """Статус выполнения классных работ""" + completed: Boolean +} + +"""Модель оценки для дневника""" +type StudentDiaryMark { + """Идентификатор оценки""" + id: ID! + + """Значение оценки из справочника оценок government_marks""" + governmentMark: Int! + + """Комментарий к оценке""" + comment: String + + """Активность, за которую была получена оценка""" + learningActivity: StudentDiaryLearningActivity! +} + +"""Модель учебного модуля для дневника (goals)""" +type StudentDiaryModule { + """Идентификатор модуля (goals.goal_id)""" + id: ID! + + """Наименование модуля (goals.name)""" + name: String! +} + +"""""" +type StudentDiligence { + """""" + stageGroupId: ID! + + """""" + studentId: UUID! + + """""" + studentName: String! + + """""" + diligence: Float! + + """""" + studentGoalDiligenceList: [StudentGoalDiligence!]! +} + +"""""" +type StudentDismissInfo { + """""" + dismissTypeId: ID! + + """""" + dismissTs: DateTime! + + """""" + lastStageGroup: StageGroup @deprecated(reason: "Use lastStageGroupS21 instead") + + """""" + lastStageGroupS21: StageGroupS21 + + """""" + lastCoalitionId: ID + + """""" + lastCoalitionName: String +} + +"""Оценка трудоемкости студентом""" +type StudentEffortEstimation { + """ID трудоемкости""" + estimationId: ID! + + """ID задания в контексте студента""" + studentTaskId: ID! + + """Пользователь""" + user: User! + + """Дата и время создания""" + createTs: DateTime! + + """Дата и время модификации""" + modifyTs: DateTime! + + """Трудоемкость в минутах""" + estimation: Int +} + +"""Оценка трудоемкости студентом""" +input StudentEffortEstimationInput { + """Ид оценки""" + estimationId: ID + + """Ид задания в контексте студента""" + studentTaskId: ID! + + """Оценка трудозатрат (мин)""" + estimation: Int + + """Признак необходимости удаления записи""" + deleteFlag: Boolean! +} + +""" +Правило и соединяющий оператор в конструкторе выполняющего для студента +""" +type StudentEvaluationRule { + """""" + logicalOperatorId: LogicalLinkTypeEnum + + """""" + value: StudentEvaluationRuleValue! +} + +"""Группа правил конструктора выполняющего для студента""" +type StudentEvaluationRuleGroup { + """""" + logicalOperatorId: LogicalLinkTypeEnum + + """""" + rulesInGroup: [StudentEvaluationRule!]! +} + +"""Информация об правиле конструктора выполняющего для студента""" +type StudentEvaluationRuleValue { + """""" + fieldId: ID! + + """""" + fieldName: String + + """""" + fieldType: EvaluationRuleValueFieldType! + + """""" + subFieldKey: String + + """""" + subFieldName: String + + """""" + operator: String! + + """""" + value: [String!]! + + """""" + valueWithDescription: [KeyValue!]! + + """""" + projectRoutingInfo: [KeyValue!]! +} + +"""""" +type StudentEvent { + """Инфо о пользователе""" + User: User! + + """Дата записи на экзамен""" + registerDate: DateTime! +} + +"""""" +type StudentEventFeedback { + """""" + id: ID! + + """""" + user: User! + + """""" + createDate: DateTime! + + """""" + rating: Int! + + """""" + comment: String +} + +"""""" +input StudentEventFeedbackInput { + """""" + calendarEventId: ID! + + """""" + rating: Int! + + """""" + comment: String +} + +"""Тип студентов в событии""" +enum StudentEventTypeEnum { + """""" + REGISTERED + + """""" + ON_WAIT_LIST +} + +"""S21. Студенческий опросник""" +type StudentFeedback { + """ID студенческого опросника""" + id: ID! + + """ID попытки""" + studentGoalAttemptId: ID! + + """ID проекта""" + goalId: ID! + + """Название проекта""" + goalName: String! + + """Тип проекта""" + goalExecutionType: ModuleExecutionType! + + """Процент выполнения попытки""" + pointPercent: Int! + + """Результат за попытку""" + resultModuleCompletion: ResultModuleCompletion! + + """Дата завершения попытки""" + resultAttemptDate: DateTime! + + """Порядковый номер попытки""" + serialNumber: Int! + + """Форма для обратной связи""" + feedbackForm: FeedbackForm +} + +"""S21. Студенческий опросник для попапа""" +type StudentFeedbackPopup { + """ID студенческого опросника""" + studentFeedbackId: ID! + + """Название проекта""" + goalName: String! + + """Дата завершения попытки""" + resultAttemptDate: DateTime! +} + +"""S21. Ответ по вопросу обратной связи студента""" +type StudentFeedbackResult { + """ID обратной связи студента""" + id: ID! + + """Номер вопроса на форме обратной связи""" + serialNumber: Int! + + """ID вопроса на форме""" + feedbackFormQuestionId: ID! + + """Заголовок вопроса на русском""" + titleRu: String! + + """Описание вопроса на русском""" + descriptionRu: String + + """Ответ на вопрос""" + value: String + + """Тип секции вопроса""" + feedbackSectionEnum: FeedbackSectionEnum! +} + +"""S21. Ответ студента по опросу""" +input StudentFeedbackResultInput { + """ID вопроса""" + feedbackFormQuestionId: ID! + + """Ответ""" + value: String! +} + +"""S21. Статус студенческого ответа""" +enum StudentFeedbackStatusEnum { + """Не требуется""" + NOT_REQUIRED + + """Не заполнен""" + NOT_FILLED + + """Заполнен, есть ответы""" + FILLED + + """Попытка завершена раньше чем сделали опрос""" + FINISHED_BEFORE_FEEDBACK +} + +"""""" +type StudentFinalMark { + """""" + studentId: UUID! + + """""" + studentName: String! + + """""" + goalLevelPercent: Int + + """""" + levelPercentDetails: [StudentGoalLevelPercentDetail!] + + """""" + testPercent: Int + + """""" + testPercentDetails: [StudentTestPercentDetail!] + + """""" + finalMark: Int + + """""" + recomendedMark: Int + + """""" + markValue: Int + + """""" + teacherName: String! + + """""" + teacherId: UUID! +} + +"""""" +type StudentFinalMarkForFormMaster { + """""" + studentId: UUID! + + """""" + studentName: String! + + """""" + goalLevelPercent: Int + + """""" + testPercent: Int + + """""" + finalMark: Int + + """""" + recommendedMark: Int + + """""" + markValue: Int + + """""" + teacherId: UUID! + + """""" + teacherName: String! +} + +"""""" +type StudentFinalMarkModel { + """""" + studentFinalMark: [StudentFinalMark!] + + """""" + footer: String! + + """""" + viewStudentSubjects: Boolean! + + """""" + markDependencyOfExternalWork: String! + + """""" + recommendedMarkDescription: String! +} + +"""""" +type StudentFinalMarkSubjectForFormMaster { + """""" + subjectId: Int! + + """""" + subjectName: String! + + """""" + studentFinalMarks: [StudentFinalMarkForFormMaster!] + + """""" + subject2MarkCount: Int! +} + +"""Отчет "Итоговые оценки. Детальный" по ученику и всем предметам""" +type StudentFinalMarkSubjects { + """""" + subjecName: String! + + """""" + goalLevelPercent: Int + + """""" + levelPercentDetails: [StudentGoalLevelPercentDetail!] + + """""" + testPercent: Int + + """""" + testPercentDetails: [StudentTestPercentDetail!] + + """""" + finalMark: Int + + """""" + recomendedMark: Int + + """""" + markValue: Int + + """""" + teacherName: String! + + """""" + teacherId: UUID! +} + +"""""" +type StudentFinalMarkSubjectsModel { + """""" + studentFinalMarkSubjects: [StudentFinalMarkSubjects!] + + """""" + markDependencyOfExternalWork: String! + + """""" + recommendedMarkDescription: String +} + +""" +Отчет "Итоговые оценки для классного руководителя" по ученикам и всем предметам +""" +type StudentFinalMarksForFormMasterModel { + """""" + studentFinalMarkSubjects: [StudentFinalMarkSubjectForFormMaster!] + + """""" + footer: String! +} + +"""Информация о студенте для фильтра в отчете по прогрессу""" +type StudentForProgress { + """Идентификатор студента (students.student_id)""" + studentId: ID! + + """Идентификатор пользователя (users.user_id)""" + userId: ID! + + """Фамилия ученика""" + lastName: String! + + """Имя ученика""" + firstName: String! + + """Отчество ученика""" + middleName: String +} + +"""Данные для формы достигнутого уровня по модулю""" +type StudentGoalAchievement { + """""" + goalLevelValueName: String! + + """""" + skillDescriptions: [SkillDescription!]! +} + +"""Результаты попытки прохождения студентом проекта""" +type StudentGoalAttempt { + """Итоговый балл за все p2p-проверки по чек-листу""" + finalPointP2p: Int + + """Фактический процент прохождения всех p2p-проверкок по чек-листу""" + factPercentageP2p: Int + + """Итоговый балл за авто-проверку""" + finalPointAuto: Int + + """Фактический процент выполнения авто-проверки""" + factPercentageAuto: Int + + """Итоговый балл за выполнение проекта""" + finalPointProject: Int! + + """Итоговый процент выполнения""" + finalPercentageProject: Int! + + """Дата окончания выполнения""" + resultDate: Date! + + """Результат проверки""" + resultModuleCompletion: ResultModuleCompletion! +} + +"""Информация о попытке прохождения модуля""" +type StudentGoalAttemptHeader { + """Идентификатор попытки выполнения модуля студента""" + studentGoalAttemptId: ID + + """Идентификатор ответа""" + studentAnswerId: ID + + """Дата и время попытки""" + resultDate: DateTime + + """Процент пройденного""" + finalPercentage: Int + + """Количество баллов полученное за попытку""" + pointProject: Int + + """Результат попытки""" + resultModuleCompletion: ResultModuleCompletion +} + +"""Информация о попытке прохождения модуля""" +type StudentGoalAttemptStatistic { + """Идентификатор попытки выполнения модуля студента""" + studentGoalAttemptId: ID! + + """Дата и время попытки""" + resultDate: DateTime! + + """Процент пройденного""" + finalPercentage: Int! + + """Количество баллов полученное за попытку""" + pointProject: Int! + + """Результат попытки""" + resultModuleCompletion: ResultModuleCompletion! +} + +"""Статус попытки выполнения проекта студентом""" +enum StudentGoalAttemptStatus { + """Студент зарегистрировался на задание (нажал registered)""" + REGISTERED + + """Студент начал выполнение задания (нажал start project)""" + IN_PROGRESS + + """ + Студент завершил выполнение задания, перешел на этап проверок (нажал finish project) + """ + IN_REVIEW + + """ + После завершения проекта (провал или успех) по любой возможной причине + Студент выполнил задание успешно + """ + SUCCESS + + """Студент провалил задание""" + FAIL +} + +"""""" +type StudentGoalDiligence { + """""" + goalId: ID! + + """""" + startDate: Date! + + """""" + endDate: Date! + + """""" + goalName: String! + + """""" + subjectName: String! + + """""" + subjectId: ID! + + """""" + progress: Float! + + """""" + diligence: Float! + + """""" + goalTargetLevel: String + + """""" + goalLevelPerformanceList: [GoalLevelPerformance!]! +} + +"""Финальный результат за проект (суммируется из всех попыток)""" +type StudentGoalFinalScore { + """Идентификатор модуля студента""" + studentGoalId: ID! + + """Статус модуля""" + goalStatus: GoalStatus + + """Тип формулы финальной сборки""" + attemptCountingFormula: AttemptCountingFormulaEnum + + """Начисленный фактический бал выполнения задания""" + finalPoint: Int + + """Процент выполнения""" + finalPercentage: Int + + """ + Процент, который необходимо набрать чтобы задание считалось выполненным + """ + percentageOfCompletion: Int! + + """Дата и время расчета оценки за проект""" + resultDate: DateTime + + """Информация о попытке прохождения модуля""" + studentAttemptList: [StudentGoalAttemptHeader!]! + + """Информация о попытке прохождения модуля""" + studentAttempts: [StudentGoalAttemptStatistic!]! +} + +"""""" +type StudentGoalLevelPercentDetail { + """""" + module: String! + + """""" + startDate: Date! + + """""" + endDate: Date! + + """""" + targetLevel: Int! + + """""" + currentLevel: Float + + """""" + goalLevelPercent: Int + + """""" + goalStatus: Int + + """""" + isHardEndDate: Boolean + + """""" + goalId: Int + + """""" + goalNumber: Int + + """""" + goalAvatarUrl: String + + """""" + daysBeforeEndDate: Int + + """""" + achievedTime: Date +} + +"""Персональный прогресс ученика по закрывающему тесту""" +type StudentGoalLevelTest { + """""" + id: ID! + + """ID самого закрывающего теста""" + goalLevelTestId: ID! + + """ID студента""" + studentId: ID! + + """Статус прохождения теста""" + status: StudentGoalLevelTestStatus! + + """Попытки прохождения теста""" + attempts: [StudentGoalLevelTestAttempt!]! + + """Текущая попытка""" + currentAttempt: StudentGoalLevelTestAttempt + + """Сам тест(контент)""" + goalLevelTest: GoalLevelTest! +} + +"""Попытка прохождения закрывающего теста""" +type StudentGoalLevelTestAttempt { + """ID попытки""" + id: ID! + + """результат попытки""" + status: StudentGoalLevelTestAttemptStatus! + + """номер попытки""" + attemptNumber: Int! + + """Задания в контексте попытки""" + tasks: [StudentGoalLevelTestAttemptTask!]! +} + +"""Статус выполнения попытки теста уровня цели""" +enum StudentGoalLevelTestAttemptStatus { + """Студент проходит тест""" + IN_PROGRESS + + """В рамках попытки тест выполнен""" + ACCEPTED + + """В рамках попытки тест завален""" + FAILED +} + +"""Задание внутри попытки прохождения закрывающего теста""" +type StudentGoalLevelTestAttemptTask { + """tasks.task_id""" + id: ID! + + """tasks.task_id""" + taskId: ID! + + """Статус студента по заданию""" + taskStatus: TaskStatusEnum +} + +"""Статус выполнения теста уровня цели""" +enum StudentGoalLevelTestStatus { + """Студент проходит тест""" + IN_PROGRESS + + """Тест успешно выполнен""" + ACCEPTED + + """Тест завален, попыток больше нет""" + FAILED + + """Тест неуспешно выполнен, но есть еще попытки""" + TRY_AGAIN +} + +"""""" +type StudentGoalLevelTestTaskAttemptAnswers { + """Несет в себе ответы типа виджет""" + widgetAnswer: [GoalLevelTestAttemptTaskWidget] + + """Несет в себе ответ старого типа""" + oldAnswer: GoalLevelTestAttemptOldTask +} + +"""Информации для виджета закрывающего теста""" +type StudentGoalLevelTestWidget { + """goal_levels.goal_level_id""" + id: ID! + + """Доступно ли прохождение закрывающего теста""" + isAvailableGoalLevelTest: Boolean! + + """Может ли тест быть сформирован""" + isCanBeGenerated: Boolean! + + """Прогресс студента по закрывающему тесту""" + studentGoalLevelTest: StudentGoalLevelTest + + """Сам тест(контент)""" + goalLevelTest: GoalLevelTest +} + +"""Рефлексия по итогам модуля""" +type StudentGoalReflection { + """Ид рефлексии""" + reflectionId: ID! + + """Ид модуля""" + goalId: ID! + + """ + Ответ на вопрос "было интересно ?" + """ + wasInteresting: ReflectionEstimationEnum! + + """ + Ответ на вопрос "было полезно ?" + """ + wasUseful: ReflectionEstimationEnum! + + """ + Ответ на вопрос "было трудно ?" + """ + wasHard: ReflectionEstimationEnum! + + """ + Ответ на вопрос "сможешь объяснить друзьям ?" + """ + canExplain: ReflectionEstimationEnum! + + """ + Ответ на вопрос "достигнута ли учебная цель ?" + """ + goalAchieved: ReflectionEstimationEnum! + + """ + Ответ на вопрос "хотел бы узнать больше ?" + """ + knowMore: ReflectionEstimationEnum! + + """Ответ на проблемный вопрос""" + problematicQuestionAnswer: String +} + +"""Рефлексия по итогам модуля""" +input StudentGoalReflectionInput { + """Ид рефлексии""" + reflectionId: ID + + """Ид модуля""" + goalId: ID! + + """ + Ответ на вопрос "было интересно ?" + """ + wasInteresting: ReflectionEstimationEnum! + + """ + Ответ на вопрос "было полезно ?" + """ + wasUseful: ReflectionEstimationEnum! + + """ + Ответ на вопрос "было трудно ?" + """ + wasHard: ReflectionEstimationEnum! + + """ + Ответ на вопрос "сможешь объяснить друзьям ?" + """ + canExplain: ReflectionEstimationEnum! + + """ + Ответ на вопрос "достигнута ли учебная цель ?" + """ + goalAchieved: ReflectionEstimationEnum! + + """ + Ответ на вопрос "хотел бы узнать больше ?" + """ + knowMore: ReflectionEstimationEnum! + + """Ответ на проблемный вопрос""" + problematicQuestionAnswer: String +} + +"""""" +type StudentGoalRetryInfo { + """""" + totalRetryValue: Int! + + """""" + usedRetryCount: Int! + + """""" + unlimitedAttempts: Boolean! +} + +"""Отчет по итогам модуля по итогам прохождения студентом""" +type StudentGoalSummary { + """Основная идея модуля""" + basicIdea: String! + + """Ид траектории""" + trajectoryId: ID + + """Количество заданий в траектории""" + tasksNumber: Int + + """Количество выполненных заданий в траектории""" + completedTasks: Int + + """Список достигнутых уровней цели с описанием""" + achievedGoals: [GoalWithLevel] + + """Список не достигнутых уровней цели с описанием""" + goalsToGo: [GoalWithLevel] + + """Количество коментариев к самому обсуждаемому заданию""" + mostDiscussedCommentsNumber: Int + + """Самые обсуждаемые задания""" + mostDiscussedTasks: [Task] + + """Всего трудозатрат на выполненные задания""" + totalTimeSpent: Int + + """Наиболее трудозатратные задания""" + taskWithLongestSpentTime: [Task] + + """Наименее трудозатратные задания""" + taskWithMinimalSpentTime: [Task] + + """Задания выполненные в группе""" + tasksMadeInGroup: [Task] +} + +"""Список Домашних Работ с дедлайном на определённую дату""" +type StudentHomeworksByDate { + """Дата дедлайна Домашних Работ (в зоне школы)""" + date: Date! + + """Список Домашних Работ с дедлайном на данную дату (в зоне школы)""" + homeworks: [HomeworkInfo!]! +} + +"""""" +enum StudentHonorRatingEnum { + """""" + HERO + + """""" + ANTIHERO +} + +"""""" +input StudentHonorRatingInput { + """оцениваемый пользователь""" + userId: UUID! + + """рейтинг""" + rating: StudentHonorRatingEnum! + + """комментарий""" + comment: String +} + +"""""" +type StudentHonorRatingModel { + """""" + studentHonorRatingId: ID! + + """""" + stageGroupId: ID! + + """""" + studentId: UUID! + + """""" + rating: StudentHonorRatingEnum! + + """""" + comment: String + + """""" + reporterStudentId: UUID! + + """""" + createTs: DateTime! +} + +"""Студент внутри Подгруппы""" +type StudentInSubgroup { + """ + Идентификатор студента в подгруппе (stage_subject_subgroup_students.stage_subject_subgroup_student_id) + """ + id: ID! + + """Мета информация о студенте, находящемся в подгруппе.""" + student: Student! + + """ + Персональная успеваемость студента внутри подгруппы (Идет по плану, Отстающий) + """ + performance: PersonalPerformance + + """Список учебных модулей назначенных на студента в рамках подгруппы""" + modules: [StudentModule!]! + + """Текущий Учебный Модуль студента в рамках подгруппы""" + currentModule: StudentModule + + """ + План на Класс по Предмету, в котором находится Подгруппа, в которой находится Студент + """ + classPlan: ClassPlan + + """Персональный План по Предмету""" + personalPlan: PersonalPlan + + """Название Подгруппы, в которой находится Студент""" + subgroupName: String! + + """ + Идентификатор Подгруппы (stage_subject_subgroups.stage_subject_subgroup_id) + """ + subgroupId: ID! + + """ + Персональные Контрольные Работы назначенные на Студента в рамках Группы по Предмету + """ + personalControlWorks: [PersonalControlWork!]! + + """ + Номер Варианта ученика по умолчанию для контрольных работ(если null, то вариант = 1) + """ + defaultControlWorkVariantNumber: Int + + """ + Персональная информация по четвертям Студента + корректное название studentStageSubjectStudyPeriodMarks + """ + studentStageSubjectStudyPeriods: [StudentStageSubjectStudyPeriod!]! + + """Годовая оценка""" + yearMark: SchoolMark + + """Последняя просмотренная версия персонального плана""" + lastViewedPersonalPlanVersion: PersonalPlanVersion + + """Название класса, к которому относится эта подгруппа - 5А""" + className: String + + """ + Название предмета, к которому относится эта подгруппа - Иностранный язык (Английский язык) + """ + subjectName: String + + """Короткое название предметма - Английский язык""" + shortSubjectName: String + + """id группы класса по предмету""" + classSubjectId: ID! + + """Название группы класса по предмету""" + classSubjectName: String + + """id предмета""" + subjectId: ID + + """""" + studentSubjectAcademicPerformances: [StudentSubjectAcademicPerformance!] +} + +"""Информация о приглашении в команду в групповом задании""" +type StudentInvitationInfo { + """Студент""" + student: Student! + + """Статус приглашения в команду""" + invitationStatus: InvitationStatusEnum! + + """Наименование кампуса""" + schoolShortName: String +} + +"""Плашка с информация о проекте или курсе на экранах студента""" +type StudentItem { + """Имя группы из плашек для отображения на фронте""" + groupName: String! + + """Имя проекта или курса""" + name: String! + + """Описание проекта или курса""" + description: String! + + """Опыт""" + experience: Int! + + """Процент прохождения завершенного проекта""" + finalPercentage: Int + + """Дата (deprecated)""" + date: DateTime! @deprecated(reason: "параметр стал необязательным") + + """Дата (актуальная)""" + dateTime: DateTime + + """Трудоемкость в часах""" + laboriousness: Int! + + """Идентификатор цели (если модуль, иначе null)""" + goalId: Int + + """Тип выполнения (если модуль, иначе null)""" + executionType: ModuleExecutionType + + """Статус (если модуль, иначе null)""" + goalStatus: DisplayedGoalStatus + + """Идентификатор курса (если не модуль, иначе null)""" + localCourseId: Int + + """Тип курса (если не модуль, иначе null)""" + courseType: CourseType + + """Статус курса (deprecated)""" + courseStatus: CourseStatus @deprecated(reason: "изменен на расширенный список отображаемых статусов (DisplayedCourseStatus)") + + """Статус курса (если не модуль, иначе null)""" + displayedCourseStatus: DisplayedCourseStatus + + """Количество ответов студента в цели""" + amountAnswers: Int + + """Количество проверенных ответов студента в цели""" + amountReviewedAnswers: Int + + """Максимальное кол-во участников команды""" + amountMembers: Int + + """Текущее количество участников в групповом проекте""" + amountJoinedMembers: Int + + """Максимальное количество участников code review""" + amountCodeReviewMembers: Int + + """Текущее количество участников code review, прошедших round1 или round2""" + amountCurrentCodeReviewMembers: Int +} + +"""""" +type StudentJournalMark { + """""" + date: Date! + + """""" + title: String! + + """""" + mark: String + + """""" + comment: String +} + +""" +Отчет "Успеваемость по эл.журналу" +""" +type StudentJournalPerformance { + """""" + stageGroupId: ID! + + """""" + stageGroupName: String! + + """""" + studentId: UUID! + + """""" + studentName: String! + + """""" + subjectId: ID! + + """""" + subjectName: String! + + """""" + stageSubjectGroupId: ID! + + """""" + stageSubjectGroupName: String! + + """""" + teacherId: UUID! + + """""" + teacherName: String! + + """--СРВ""" + avgWeightedMark: String + + """--средняя СРВ всех учеников ГП""" + stageSubjectGroupStudentsAvgWeightedMark: String + + """--СР""" + avgMark: String + + """--СР всех учеников ГП""" + stageSubjectGroupStudentsAvgMark: String + + """--СР по всем предметам (средняя оценка ученика по всем предметам)""" + studentAvgMark: String + + """ + --СР по всем предметам (средняя оценка всех учеников класса по всем предметам) + """ + sgAvgMark: String + + """--итог.оценка""" + finalMarkValue: String + + """--средняя итог.оценка всех учеников ГП""" + finalStageSubjectGroupStudentsAvgMark: String + + """""" + marks: [StudentJournalMark!]! +} + +"""Фильтр данных отчета 'Успеваемость по эл.журналу' выгрузка в Excel""" +input StudentJournalPerformanceExcelInput { + """""" + stageId: ID! + + """""" + stageName: String! + + """""" + studyPeriodId: ID! + + """""" + studentUserId: UUID + + """""" + showStageGroupMarks: Boolean! + + """""" + reportDateTime: String! +} + +"""Урок ученика""" +type StudentLesson { + """Идентификатор урока(TimetableId)""" + id: ID! + + """Наименование кабинета/помещения в котором проводиться урок""" + classRoomName: String + + """Учитель, который проводит урок""" + teacher: User! + + """Идентификатор учителя, ведущего урок (teachers.teacher_id)""" + teacherId: UUID! + + """Дата/Время начала урока""" + start: DateTime! + + """Дата/Время окончания урока""" + end: DateTime! + + """Предмет изучаемый на уроке""" + subject: Subject! + + """Текущий модуль ученика""" + currentModule: StudentModule + + """Текущий, ближайший будущий или ближайший прошедший модуль""" + nearestModuleForLessonDate: StudentModule + + """Признак завершенности всех модулей из плана по предмету урока""" + allSubjectPlanModulesAchieved: Boolean + + """Номер урока по предмету в этот день""" + lessonNumber: Int! + + """План на урок""" + plan: LessonPlan + + """Предыдущий урок""" + previousLessonOnSubject: LessonShort + + """Следующий урок""" + nextLessonOnSubject: LessonShort + + """Контрольная работа по данному предмету""" + controlWork: PersonalControlWork +} + +"""Посещаемость урока""" +type StudentLessonAttendance { + """Урок""" + lessonId: ID! + + """Дата урока""" + lessonDate: DateTime! + + """Тема урока""" + lessonTheme: String + + """Значение(пропуск, пропуск по болезни)""" + cellValue: VisitJournalCellValueEnum! +} + +"""Сокращенный урок ученика""" +type StudentLessonCompact { + """Идентификатор урока(TimetableId)""" + id: ID! + + """Наименование кабинета/помещения в котором проводиться урок""" + classRoomName: String + + """Дата/Время начала урока""" + start: DateTime! + + """Дата/Время окончания урока""" + end: DateTime! + + """Предмет изучаемый на уроке""" + subject: Subject + + """Номер урока по предмету в этот день""" + lessonNumber: Int! + + """План на урок""" + plan: LessonPlanV4 + + """Блоки заметок для урока вне плана""" + lessonWithoutPlanNotes: [LessonPlanNote] + + """Блоки заданий для урока вне плана""" + lessonWithoutPlanTasks: [LessonPlanTask] + + """Блоки материалов""" + lessonWithoutPlanMaterials: [LessonPlanMaterial] + + """Предыдущий урок""" + previousLessonOnSubject: LessonShort + + """Следующий урок""" + nextLessonOnSubject: LessonShort + + """Контрольная работа по данному предмету""" + controlWork: PersonalControlWork + + """Учитель по текущему уроку""" + teacher: Teacher + + """Модуль V4 относящийся к уроку""" + studentModuleModel: StudentModule + + """Счетчик запланированных модулей у ученика""" + studentPlanModuleCounter: Int +} + +"""Информация со статусом по уроку""" +type StudentLessonProgressInfo { + """идентификатор урока""" + lessonId: ID! + + """текущий статус урока""" + status: LessonProgressStatus! +} + +"""прогресс учеников по уровню""" +type StudentLevelPerformance { + """id ученика""" + studentId: UUID! + + """Процент зачтенных заданий уровня""" + levelPerformance: Int! + + """Признак достижения уровня""" + achieved: Boolean +} + +"""""" +type StudentLightMarkModel { + """Урок к которому привязана оценка""" + lesson: Lesson + + """Оценка""" + journalStudentMarkModel: JournalStudentMark! + + """Активность (домашняя, классная работа)""" + learningActivity: LearningActivity +} + +"""Материалы к домашнему заданию и к уроку""" +type StudentMaterialsForLessonModel { + """Список материалов к домашнему заданию""" + homeworkContentItem: [ContentItem!] + + """Список материалов к уроку""" + lessonContentItem: [ContentItem!] +} + +"""Персонализированный учебный модуль""" +type StudentModule { + """moduleId / goalId / Ид модуля / Ид цели""" + id: ID! + + """""" + studentModuleId: ID! + + """Id ученика""" + studentId: ID! + + """Название модуля""" + moduleTitle: String! + + """Краткое описание модуля #""" + moduleShortDesc: String! + + """Ид дисциплины""" + subjectId: ID! + + """Название предмета/дисциплины""" + subjectTitle: String! + + """Полное название предмета/дисциплины""" + subjectFullTitle: String! + + """Дедлайн цели""" + deadLineDate: Date + + """ + Является ли дедлайл жестким. После истечения жесткого дедлайна нельзять отправлять задания модуля на проверку + """ + isHardDeadline: Boolean! + + """Запланированная дата начала выполнения Учебного Модуля""" + startDate: Date + + """Количество заданий в модуле""" + taskCount: Int! + + """Количество выполненных заданий""" + completedTaskCount: Int! + + """Персонализированная траектория""" + trajectory: PersonalTrajectory + + """Наличие актуальной траектории по данному модулю""" + validTrajectoryExists: Boolean! + + """Количество заданий, относящихся к теме лайт""" + goalTasksCount: Int @deprecated(reason: "Использовать studentPlaylistTasksCount") + + """Количество заданий в текущей системе заданий модуля ученика""" + studentPlaylistTasksCount: Int! + + """ + Плейлист, назначенный Студенту для прохождения текущего Учебного Модуля + """ + playlist: Playlist + + """Информация о закрытии модуля""" + achieveInfo: ModuleAchieveInfo! + + """Максимально достигнутый Студентом Уровень в рамках Учебного Модуля""" + achievedLevel: Float! + + """Признак текущего модуля""" + isActive: Boolean! + + """Текущее рекомендуемое задание в рамках модуля""" + currentTask: StudentTask + + """Текущие задания в модуле""" + threeNextTasks: [StudentTask!] + + """Запланированный уровень достижения цели учителем""" + plannedGoalLevel: String! + + """Запланированный уровень достижения цели студентом""" + studentTargetGoalLevel: String + + """Планируемая ТрудоемкостьStudyModule""" + plannedLaboriousness: Int! + + """Часы из Базисного Плана""" + hours: SubjectHours + + """Запланированный уровень достижения цели учителем""" + plannedLevel: Float + + """Запланированный уровень достижения цели студентом""" + studentLevel: Float + + """Темп прохождения модуля участником относительно ожидаемого""" + tempo: StudentModuleTempo! + + """Тип Плана, в рамках которого ученик выполняет Учебный Модуль""" + planType: PlanTypeEnum! + + """Задания модуля, которые запланированы у ученика в календаре""" + planedTasks: [StudentTask!]! + + """Задачи, по которым Студент проявлял активность вне текущей Траектории""" + pointsOutOfTrajectory: [StudentTask!]! + + """Аватар модуля (старая версия)""" + avatarUrl: String + + """Обложка модуля""" + landingUrl: String + + """Флаг - готов ли Учебный Модуль к генерации Траектории""" + isReadyForPlanning: Boolean! + + """Лендинг модуля""" + landingTemplate: StudyModuleLandingTemplate! + + """Флаг обязательности модуля""" + mandatory: Boolean! + + """Персональные Контрольные Работы Ученика по Учебному Модулю""" + personalControlWorks: [PersonalControlWork!]! + + """Доступен ли Учебный Модуль на чтение текущему пользователю""" + hasReadAccess: Boolean! + + """Награды, выдаваемые за закрытие модуля""" + awards: [UserModuleAward!]! + + """* Флаг обязательности Учебного Модуля в рамках текущего Плана""" + mandatoryIntoPlan: Boolean! + + """Оценка""" + mark: SchoolMark + + """Начисленный фактический бал выполнения задания""" + finalPoint: Int + + """Начисленный фактический процент выполнения задания""" + finalPercentage: Int + + """Комментарий Учителя по прогрессу прохождения Учебного Модуля Учеником""" + comment: String + + """Есть ли мотивационный блок у модуля""" + motivationBlockPresent: Boolean! + + """Заходил ли ученик в мотивационный блок""" + motivationBlockOpened: Boolean! + + """Ответ ученика на проблемный вопрос мотивационного блока""" + motivationBlockProblematicAnswer: String + + """Прошел ли ученик рефлексию по модулю""" + isReflectionPassed: Boolean! + + """ + Вопрос на который ученик давал ответ в мотивационном блоке данного модуля + """ + motivationBlockProblematicQuestion: String + + """Учебный модуль""" + studyModule: StudyModule! + + """Признак что на данный модуль можно зарегистрироваться""" + canRegister: Boolean! + + """Цель по отстающему предмету""" + personalObjective: PersonalObjective + + """Максимальный уровень на который учителем был закрыт Учебный Модуль""" + maxClosedByTeacherLevel: Float + + """ + Включен/Выключен чек-бокс "Просмотр контента" + """ + accessBeforeStartProgress: Boolean + + """Дата регистрации""" + openRegistration: DateTime + + """Дата начала выполнения""" + startProgress: DateTime + + """Дата окончания выполнения""" + deadline: DateTime + + """Дата окончания проверки""" + checkFinish: DateTime + + """Дата завершение проекта студентом""" + completionDate: DateTime + + """Очки за экзамен""" + examPoints: Int + + """Типы модулей""" + goalExecutionType: ModuleExecutionType + + """Статусы модуля""" + goalStatus: GoalStatus + + """Результат выполнения модуля""" + resultModuleCompletion: ResultModuleCompletion + + """Отображаемый статус проекта""" + displayedGoalStatus: DisplayedGoalStatus + + """Текущий урок модуля. Определяется по тайм-зоне школы ученика""" + currentLesson: StudentLesson + + """ + Дата завершения выполнения проекта шедуллером (если проект не завершён шедуллером, вернёт null) + """ + finishedExecutionDateByScheduler: DateTime + + """Флаг - выставлен ли порядковый номер""" + isSubjectOrderNumberExists: Boolean + + """Порядковый номер предмета""" + subjectOrderNumber: Int + + """Порядковый номер модуля в предмете""" + goalOrderNumber: Int + + """Продолжительность модуля""" + durationFromStageSubjectGroupPlan: Int + + """Настройки команды из плана на класс, null если проект не групповой""" + teamSettings: TeamSettings + + """Список гибких навыков с макс. кол-вом очков за проект""" + softSkills: [SoftSkillPoint!]! + + """Номер попытки""" + currentAttemptNumber: Int + + """Флаг - отсутствуют ли дедлайны в модуле, null, когда не применимо""" + isDeadlineFree: Boolean + + """Флаг для определения доступности ретраев задания""" + isRetryAvailable: Boolean! + + """Id локального курса""" + localCourseId: ID + + """Базовые параметры курса""" + courseBaseParameters: CourseBaseParameters + + """Прогноз прохождения модуля""" + probability: Boolean +} + +"""Полная информация по Учебному Модулю в контексте Студента""" +type StudentModuleInfo { + """Персональная информация по Учебному Модулю в контексте Студента""" + studentModule: StudentModule + + """ + Студент в Подгруппе, в рамках которой Студент в данный момент выполняет Учебный Модуль + """ + subgroupStudent: StudentInSubgroup + + """ + Группа по Предмету, в рамках которой Студент в данный момент изучает Предмет, к которому относится Модуль + """ + currentClassSubject: ClassSubject + + """ + Плэйлисты, доступные для назначения Студенту + + плейлист, который в данный момент назначен на студента по этому модулю + """ + availableModulePlaylists: [Playlist!]! +} + +"""Персонализированный учебный модуль лайт""" +type StudentModuleLight { + """moduleId / goalId / Ид модуля""" + id: ID! + + """Название модуля""" + moduleTitle: String! + + """Краткое описание модуля""" + moduleShortDesc: String! + + """Дата начала выполения модуля устаревшая""" + startDate: Date! @deprecated(reason: "We need nullable field due to out of plan modules") + + """Дата окончания выполения модуля устаревшая""" + endDate: Date! @deprecated(reason: "We need nullable field due to out of plan modules") + + """Идентификатор предмета учебного модуля""" + subjectId: ID! + + """Задания модуля отсортированные по плейлисту""" + plannedTasks: [StudentTask!]! + + """Флаг наличия траектории по модулю""" + hasTrajectory: Boolean! + + """Дата начала выполения модуля актуальная""" + actualStartDate: Date + + """Дата окончания выполения модуля актуальная""" + actualEndDate: Date + + """Тип Плана, в рамках которого ученик выполняет Учебный Модуль""" + planType: PlanTypeEnum +} + +"""Состояние прохождения модуля учеников""" +enum StudentModuleState { + """Модуль запланирован для изучения и уже пройден""" + COMPLETED +} + +"""""" +type StudentModuleStatus { + """""" + goalNumber: Int! + + """""" + goalName: String! + + """""" + goalId: Int! + + """""" + goalAvatarUrl: String + + """""" + startDate: Date! + + """""" + endDate: Date! + + """""" + isHardEndDate: Boolean! + + """""" + daysBeforeEndDate: Int + + """""" + plan: Int! + + """""" + maxArchLevel: String! + + """""" + goalStatus: Int! + + """""" + achievedTime: DateTime + + """""" + hidePercent: Boolean! +} + +"""""" +type StudentModuleTempo { + """""" + tempoStatus: StudentModuleTempoEnum + + """""" + actualStartDate: Date + + """""" + actualEndDate: Date + + """""" + progressPercentage: Float +} + +"""Темп выполнения модуля учеником""" +enum StudentModuleTempoEnum { + """ученик выполняет задания в соответсвии с ожидаемым темпом""" + ON_TIME + + """ученик отстает от ожидаемого темпа""" + EXPIRED + + """ученик не закрыл модуль до дедлайна""" + FAILED + + """отсутствует траектория и достижения""" + NOT_EXISTS +} + +"""""" +type StudentModuleWidget { + """""" + moduleId: Int! + + """""" + moduleTitle: String! + + """""" + moduleAvatarUrl: String! + + """""" + moduleStatus: String! + + """""" + subjectTitle: String! +} + +"""""" +type StudentModuleWidgetData { + """""" + modules: [StudentModuleWidget]! + + """""" + progressValue: Int! +} + +""" +тип агрегированных данных из плана обучения, который напрямую связывает модули с заданиями для конкретного студента. Такакая агрегация нужна для шторы офлайн заданий +""" +type StudentModuleWithTasksModel { + """Модуль""" + module: StudentModule! + + """Задания с уровнем которые относятся к данному студенту""" + tasks: [TaskWithLevel!]! +} + +""" +Текущий модуль по предмету и общее количество модулей в учебном периоде +""" +type StudentModulesInSubjectContext { + """""" + modulesCountInStudyPeriod: Int! + + """""" + studentModule: StudentModule +} + +"""Количество заданий с определенным статусом в модуле""" +type StudentModulesTaskStatusWithQuantity { + """ + идентификатор Студента в Подгруппе (stage_subject_subgroup_students.stage_subject_subgroup_student_id) + """ + studentInSubgroupId: ID! + + """Количество заданий в модулях студента в определенных статусах""" + moduleTaskStatusQuantity: [ModuleTaskStatusWithQuantity!]! +} + +"""""" +type StudentMutations { + """""" + updateTaskPlanDate(studentTaskId: ID!, newPlanDate: DateTime): StudentTask! + + """""" + readNotification(notificationId: ID!): ID! + + """Пометить список Уведомлений как прочитанные""" + readNotifications( + """Список идентификаторов Уведомлений""" + notificationIds: [ID!]! + ): [ID!]! + + """""" + readAllNotifications: Boolean! + + """Пометить сообщение к заданию как удаленное""" + markTaskMessageAsRemoved(messageId: ID!): TaskMessage! + + """ + Изменить сообщение к заданию и/или прикрепленные к сообщению файлы. Файлы будут соответствовать переданному списку - пустой список удалит файлы + """ + editTaskMessage( + """Идентификатор сообщения""" + messageId: ID! + + """Текст сообщения""" + text: String! + + """ + Список файлов на момент сохранения текущего состояния сообщения. Файлы будут соответствовать переданному списку - пустой список удалит файлы + """ + files: [FileInput!]! + ): TaskMessage! + + """Создать сообщение к заданию""" + createTaskMessage( + """Идентификатор задания""" + taskId: ID! + + """Текст комментария""" + text: String! + + """Приложенные к комментарию файлы""" + files: [FileInput!]! + + """ + Идентификатор ученика, который решает задание в рамках которого отправляется комментарий + Если передается NULL - значит данное задание решает текущий пользователь + """ + studentId: ID + ): TaskMessage! + + """""" + attachTaskMessageFile(messageId: ID!, file: FileInput): File! + + """""" + deattachTaskMessageFile(messageFileId: ID!): ID! + + """создать факты прочтения комментариев""" + createTaskMessageReadFacts(messageIds: [ID!]!): [TaskMessageReadFact!]! + + """ + новый универсальный метод для отправки ответа ученика (для текстового ответа, ответа surveyjs, ЭОР) + переписать с использованием Input + """ + saveAnswer( + """""" + taskId: ID! + + """""" + answer: String + + """""" + testAnswer: String + + """""" + externalResult: String + + """""" + externalSurvey: ExternalSurveyAnswerInput + + """""" + files: [FileInput!] + + """""" + reviewStudentId: ID + + """ + идентификатор проверочной корзины (пока что только для Внешнего Конкурса) + """ + checkBucketId: UUID + + """Идентификатор урока, в рамках которого был отправлен ответ на задание.""" + lessonId: ID + + """Контекст данного ответа с дополнительной информацией (опционально)""" + incomingAnswerContext: IncomingAnswerContextInput + + """ + Идентификатор плана урока, в рамках которого был отправлен ответ на задание. + """ + lessonPlanId: ID + ): SaveAnswerResponse! + + """редактирование отправленного ответа (до проверки учителем)""" + editAnswer(answerId: ID!, answer: String!): StudentAnswer! @deprecated(reason: "Will be deleted in 0.13.0") + + """изменение проверяющего (до самой проверки)""" + changeAnswerReviewer(taskId: ID!, answerId: ID!, reviewStudentId: ID!): StudentAnswer! + + """отозвать ответ""" + withdrawAnswer(answerId: ID!): Boolean! + + """ + Генерирует Траекторию достаточную для достижения Учебного Модуля по идентификатору Учебного Модуля (goals.goal_id) + """ + generateTrajectory(goalId: ID!): StudentModule! + + """ + Создает Траекторию, которая заполняется исключительно обязательными Заданиями из Плейлиста + по идентификатору Учебного Модуля (goals.goal_id) + """ + startCreatingTrajectory(goalId: ID!): StudentModule! + + """ + Изменяет Траекторию по идентификатору Траектории (ersonal_trajectories.personal_trajectory_id) + """ + saveTrajectory(trajectoryId: ID!, points: [PersonalTrajectoryPointInput!]!): StudentModule! + + """Добавить Задание в Траекторию""" + addTrajectoryPoint(trajectoryId: ID!, point: PersonalTrajectoryPointInput!): PersonalTrajectory! + + """Удалить Задание из Траектории""" + removeTrajectoryPoint(trajectoryId: ID!, pointId: ID!): PersonalTrajectory! + + """""" + removeTrajectoryById(trajectoryId: ID!): ID! + + """Ответ принят, задание зачтено""" + acceptStudentAnswer( + """""" + studentId: ID! + + """""" + answerId: ID! + + """""" + governmentMarkId: Int + + """Контекст данного ответа с дополнительной информацией (опционально)""" + incomingAnswerContext: IncomingAnswerContextInput + ): AcceptAnswerResponse! + + """Ответ не принят, задание провалено""" + rejectStudentAnswer(studentId: ID!, answerId: ID!, governmentMarkId: Int, finalTry: Boolean!): RejectAnswerResponse! + + """""" + saveP2PAnswers(taskIds: [ID!]!): [SaveAnswerResponse!]! + + """Проставление время первого просмотра задания учеником""" + setStudentTaskFirstViewTime(taskId: ID!): StudentTask! + + """""" + setMotivationBlockOpened(goalId: ID!): Boolean + + """Сохранить ответ ученика на проблемный вопрос""" + saveMotivationBlockAnswer(goalId: ID!, answer: String!): Boolean + + """Пометить уведомления ученика как прочитанные в рамках задания""" + markNotificationsAsRead( + """ + Идентификатор задания по которому необходимо отметить все уведомления как прочитанные + """ + taskId: ID! + ): [Notification!]! + + """Сохранение рефлексии по итогу модуля""" + saveStudentGoalReflection(studentGoalReflectionInput: StudentGoalReflectionInput!): ID! + + """Сохранение статуса показа тултипов""" + saveStudentTooltipStatus(studentTooltipStatus: StudentTooltipStatusInput!): ID! + + """Сохранение реальной трудоемкости задания""" + saveStudentEffortEstimation(studentEffortEstimationInput: StudentEffortEstimationInput!): ID! + + """S21. Добавление свободного времени для проверки""" + addEventToTimetable(start: DateTime!, end: DateTime!): [CalendarEvent!]! + + """S21. Удаление свободного времени для проверки""" + deleteEvent(eventId: ID!): Boolean! + + """S21. Изменение свободного таймслота для проверки""" + changeEventSlot(eventSlotId: ID!, start: DateTime!, end: DateTime!): [CalendarEvent!]! + + """S21. Удаление свободного таймслота для проверки""" + deleteEventSlot(eventSlotId: ID!): Boolean! + + """""" + addBookingToEventSlot(startTime: DateTime!, answerId: ID!): CalendarBooking! @deprecated(reason: "S21-12171. Заменено на addBookingP2PToEventSlot. Добавлено обязательное поле wasStaffSlotChosen.") + + """S21. Запись на проверку""" + addBookingP2PToEventSlot( + """""" + startTime: DateTime! + + """""" + answerId: ID! + + """""" + wasStaffSlotChosen: Boolean! + + """Онлайн проверка с Jazz""" + isOnline: Boolean + ): CalendarBooking! + + """S21. Запись на проверку код-ревью""" + addBookingCodeReviewToEventSlot(studentGoalId: ID!, startTime: DateTime!): CalendarBooking + + """S21. Завершить Раунд_1 по код-ревью""" + completeFirstCodeReviewRound(studentGoalId: ID!): [CodeReviewRound!]! + + """S21. Завершить Раунд_2 по код-ревью, оценить проект и ревьюверов""" + evaluateCodeReviewProjectAndReviewers(studentGoalId: ID!, finalMark: Boolean!, studentMarks: [CodeReviewersMarksInput!]!): StudentCodeReview + + """ + S21. Попытаться списать CRP (сode review points) для отправки модуля на проверку код-ревью + {null} - если не удалось списать CRP + """ + tryDecreaseCodeReviewPoints(goalId: ID!): Int + + """ + S21. Отмена записи на проверку код ревью. {null} - если не найдено событие в календаре + """ + removeBookingToCodeReview(eventId: ID!): CalendarEvent + + """S21. Отмена записи на проверку""" + removeBookingFromEventSlot(bookingId: ID!): Boolean! + + """Запись на экзамен""" + subscribeToExam(eventId: ID!): Exam! @deprecated(reason: "Use subscribeToEvent(eventId: ID!)") + + """Отмена записи на экзамен""" + unsubscribeFromExam(eventId: ID!): Exam! @deprecated(reason: "Use unsubscribeFromEvent(eventId: ID!)") + + """Запись на мероприятие""" + subscribeToEvent(eventId: ID!): CalendarEvent! + + """Отмена записи на мероприятие""" + unsubscribeFromEvent(eventId: ID!): CalendarEvent! + + """Создание фидбэка на мероприятие""" + createCalendarEventFeedback(studentFeedback: StudentEventFeedbackInput!): StudentEventFeedback! + + """ + S21. Отметка что запланированная встреча не состоялась из-за отсутствия одного из участников + """ + markAbsenceInProtocol(bookingId: ID!): BookingStatusEnum! + + """ + S21. Старт Р2Р проверки. Обновление заполненного чек-листа по ответу студента + """ + startP2pCheck(filledChecklistId: ID!): Boolean! @deprecated(reason: "Use completeP2pCheck") + + """""" + saveNewDataAndEndTimeCheck(filledChecklistInput: FilledChecklistInput!): Float! + + """ + Сохранить введенные данные, записать время окончания проверки, вычислить продолжительность проверки + """ + completeP2pCheck(checklistFilledInput: ChecklistFilledInput!): Float! + + """Видеозапись онлайн-проверки загружена""" + markP2pCheckVideoUploaded(filledChecklistId: ID!, link: String!): Boolean! @deprecated(reason: "use school21 mutation") + + """Ошибка загрузки видеозаписи онлайн-проверки""" + markP2pCheckVideoFailedToUpload(filledChecklistId: ID!, errorMessage: String!): Boolean! @deprecated(reason: "use school21 mutation") + + """Пользователь отменил загрузку видео""" + markP2pCheckVideoUploadCancelled(filledChecklistId: ID!): Boolean! @deprecated(reason: "use school21 mutation") + + """Создание фидбэка проверяемого по заданию, привязанного к чек-листу""" + createReviewFeedback(reviewFeedbackInput: ReviewFeedbackInput!): ReviewFeedback! + + """Отправка кода питон на проверку; в ответ получает id задания""" + postPythonTranslation(sourceCode: String!): String! + + """Подача жалобы на буллинг""" + saveStudentBullyingComplaint(studentBullyingComplaintInput: StudentBullyingComplaintInput!): UUID! + + """Сохранить факт просмотра тултипа по буллингу""" + saveBullyingTooltipView: Boolean! + + """Формирует/сохраняет Персональную Цель типа CATCH_UP_ON_SUBJECT_TASKS""" + saveNewPersonalObjectiveCatchUpOnSubject( + """""" + subjectId: ID! + + """ + сколько минут ученик может уделять цели в день в дополнение к длинне уроков по этому предмету + """ + dayWorkTimeForObjective: Int! + + """ + заменять-ли существующую in-progress цель в случае её наличия (тогда если true - заменяет, если false - исключение) + """ + replaceExisting: Boolean! + ): PersonalObjectiveWithBuildInfo! + + """Удаление цели по её id""" + deletePersonalObjectiveById(id: ID!): Boolean + + """Создание команды в групповом задании с ручным формированием команд""" + createTeam(taskId: ID!): ProjectTeamMembers! + + """ + Расформирование команды в групповом задании с ручным формированием команд + """ + disbandTeam(teamId: UUID!): Boolean! + + """ + Выход студента из команды в групповом проекте, до начала его выполнения + """ + exitStudentFromTeam(teamId: UUID!, exitReasonId: Int, exitReasonDescription: String): Boolean! + + """Изменение имени команды в групповом задании""" + changeGroupName(teamId: UUID!, newName: String!): String! + + """ + Отправка приглашения в команду в групповом задании с ручным формированием команд + """ + sendInvitation(teamId: UUID!, userId: ID!): StudentInvitationInfo! + + """ + Отмена приглашения в команду в групповом задании с ручным формированием команд + """ + cancelInvitation(teamId: UUID!, userId: ID!): StudentInvitationInfo! + + """Принятие приглашения в команду в групповом задании""" + acceptInvitation(teamId: UUID!): Boolean! + + """Отказ от приглашения в команду в групповом задании""" + rejectInvitation(teamId: UUID!): Boolean! + + """S21. Повторная попытка создать проект студента в GitLab""" + retryCreatePrivateGitlabProject(studentAnswerId: ID!): Boolean! + + """Отправка студентом заявки на расформирование команды""" + sendTeamDisbandRequest(teamId: UUID!, comment: String!, urlFileComment: String, goalId: ID): UserDisbandRequestStatus! + + """Изменяет статус задания в контексте студента""" + changeTaskProgressStatus( + """идентификатор студента""" + studentId: ID! + + """идентификатор задания""" + taskId: ID! + + """новый статус задания""" + taskStatus: TaskStatusEnum! + ): StudentTaskInfo! + + """ + Метод удаляет старую траекторию и автоматически генерирует новую для того же модуля + """ + removeTrajectoryByIdAndRegenerateTrajectory(trajectoryId: ID!): StudentModule! + + """ + Метод удаляет старую траекторию и создает новую траекторию только с обязательными заданиями в ней + """ + removeTrajectoryByIdAndRestartCreatingTrajectory(trajectoryId: ID!): StudentModule! + + """Сохранения SSH ключа для экзаменационного пользователя""" + saveExamSSHKey( + """Временный идентификатор пользователя в внешней системе""" + fakeExternalSystemUserId: String! + + """SSH ключ для внешней системы""" + key: String! + ): String! + + """Старт экзамена студентом с последующей выдачей ему первого задания""" + startExam(examEventId: ID!, goalId: ID!): ExamTaskWithStatuses + + """Получение очередного задания во время прохождения экзамена""" + handleCurrentExamTask(examEventId: ID!, goalId: ID!, skip: Boolean, next: Boolean): ExamTaskWithStatuses + + """Завершение экзамена""" + finishExam(examEventId: ID!): ExamResult! + + """Завершение выполнения экзаменационного теста""" + finishExamTest( + """Идентификатор события экзаменационного теста""" + examEventId: ID! + + """Идентификатор задания""" + taskId: ID! + + """Список файлов""" + files: [FileInput!]! + + """Идентификатор проверяющего""" + reviewUserId: ID + + """Cписок ответов на вопросы (виджеты) экзаменационного теста""" + answersToWidgets: [AnswerToWidgetInput!] + ): ExamTestResult! + + """Переключение учетной записи пользователя на временную""" + switchStudentToFakeAccount(examEventId: ID!): Boolean! + + """Запрос на сдвиг дедлайна""" + createDeadlineShiftRequest(deadlineRequest: DeadlineShiftRequestInput!): DeadlineShiftRequest + + """""" + saveStudentAnswer( + """Идентификатор задания""" + taskId: ID! + + """Список файлов""" + files: [FileInput!]! + + """Идентификатор проверяющего""" + reviewUserId: ID + + """ + Ответ студента + Только в случае, если все виджеты информационные. НУЖНА ВАЛИДАЦИЯ!!!!! + """ + answerBody: String + + """""" + widgetAnswers: [WidgetAnswerInput!]! + + """Ответы на виджеты""" + answersToWidgets: [AnswerToWidgetInput!] + + """Идентификатор урока, в рамках которого был отправлен ответ на задание.""" + lessonId: ID + + """Контекст данного ответа с дополнительной информацией (опционально)""" + incomingAnswerContext: IncomingAnswerContextInput + + """ + Идентификатор плана урока, в рамках которого был отправлен ответ на задание. + """ + lessonPlanId: ID + ): SaveStudentAnswerResponse! + + """""" + acceptTheory( + """идентификатор задания""" + taskId: ID! + ): StudentTaskInfo! + + """""" + evaluateTaskPreviewStudentAnswer( + """Ответы на виджет с телом виджета""" + answers: [TaskPreviewEvaluationWidgetInput!]! + ): [TaskPreviewEvaluationWidgetResult!]! + + """""" + changeStudentTaskStatus( + """Идентификатор задания в контексте ученика""" + studentTaskId: ID! + + """ + Статус, в который необходимо перевести задание(Может быть только ACCEPTED или TRY_AGAIN) + """ + status: TaskStatusEnum! + + """Ид госудерственной оценки""" + governmentMarkId: Int + ): StudentTask! + + """""" + capitulationFromTheCourse(localCourseId: ID!): StudentCourseModel! + + """ + Проверка ответа ученика на задание с типом "Инофрмационное" + """ + evaluateInfoTaskAnswer( + """Идентификатор задания в контексте ученика""" + studentTaskId: ID! + + """Ответы на виджеты""" + answers: [AnswerToWidgetInput!]! + ): [TaskPreviewEvaluationWidgetResult!]! @deprecated(reason: "Changed return type to StudentTask. Use evaluateInfoTaskAnswers.") + + """ + Проверка ответа ученика на задание с типом "Инофрмационное" + """ + evaluateInfoTaskAnswers( + """Идентификатор задания в контексте ученика""" + taskId: ID! + + """Ответы на виджеты""" + answers: [AnswerToWidgetInput!]! + ): StudentTask! + + """Сохранение ответов на виджеты экзаменационного теста""" + saveExamTestAnswers( + """id эвента экзаменационного теста""" + examEventId: ID! + + """Идентификатор задания в контексте ученика""" + taskId: ID! + + """id следующей страницы""" + nextPageNumber: Int! + + """Ответы на виджеты""" + answers: [AnswerToWidgetInput!]! + + """Список файлов""" + files: [FileInput!]! + + """Идентификатор проверяющего""" + reviewUserId: ID + ): Boolean + + """Сохранить желаемый целевой уровень модуля""" + saveTargetGoalLevel( + """Модуль для которого сохраняется целевой уровень""" + goalId: ID! + + """Желаемый целевой уровень модуля""" + targetedGoalLevel: Float! + ): StudentTargetGoalLevel! + + """Создать новую попытку теста для уровня цели (закрывающий тест 2.0)""" + createGoalLevelTestAttempt(goalLevelTestId: ID!): StudentGoalLevelTestAttempt! + + """Провалить попытку теста для уровня цели (закрывающий тест 2.0)""" + failGoalLevelTestAttempt(studentGoalLevelTestAttemptId: ID!): StudentGoalLevelTestAttempt! + + """Переключить флаг использования нового дизайна""" + setNewDesignUsageFlag(isNewDesignEnabled: Boolean!): Boolean! @deprecated(reason: "Будет удалена после внедрения нового дизайна") + + """Сброс токена раннера для задания в гитлабе""" + resetRunnersToken(taskId: ID!): GitlabLink! + + """Смена статуса заданий""" + setExternalStudentTaskStatus(taskId: ID!, taskStatus: TaskStatusEnum!): StudentTask! + + """Сохранение ответа на задание в рамках закрывающего теста""" + saveStudentGoalLevelTestAnswer( + """Идентификатор задания""" + taskId: ID! + + """Ответы на виджеты""" + answersToWidgets: [AnswerToWidgetInput!] + + """Ответ на задание, через JSON (Старый конструктор)""" + answer: String + ): SaveStudentGoalLevelTestAnswerResponse! + + """Отправка заявки на вступление в класс""" + createStageGroupStudentRequest(stageGroupId: ID!): StageGroupStudentRequest! + + """Установить соответствие критерию""" + setTaskCriteriaValue( + """Идентификатор критерия""" + criteriaId: ID! + + """Идентификатор ученика""" + studentId: ID! + + """Значение соответствия""" + criteriaValue: CriteriaValue! + ): StudentCriteriaValue! @deprecated + + """Подтвердить соответствие критериям""" + setTaskCriteriaValueConfirm( + """Идентификатор задания""" + taskId: ID! + + """Идентификатор ученика""" + studentId: ID! + ): Boolean! @deprecated + + """""" + setTaskCriteriaConformity(studentCriteriaValueWrappers: [StudentCriteriaValueInput!]): [StudentCriteriaValue!]! + + """Время прохождения задания""" + setTaskCompletionTime( + """Идентификатор задания""" + taskId: ID! + + """Идентификатор ученика""" + studentId: ID! + + """Время старта""" + startDateTime: DateTime! + + """Время окончания выполнения""" + endDateTime: DateTime + + """Время выполнения в секундах""" + actualLaboriousness: Int + ): Boolean + + """ + Обновление списка бейджей ученика за количество пройденных 'больших вызовов' + """ + updateStudentPassedBigChallengeCountBadges: Boolean! + + """ + Обновление списка бейджей ученика за количество пройденных модулей с 4 целевым уровнем + """ + updateStudentGoalsCountBadges: Boolean! + + """ + Обновление списка бейджей ученика за количество пройденных модулей выше чем выставлено учителем + """ + updateStudentPassedLevelCount: Boolean! + + """""" + saveOrUpdatePortfolioDocument(portfolioDocumentId: UUID, categoryCode: String!, typeCode: String!, documentDate: Date!, documentName: String!, fields: [PortfolioDocumentFieldsInput!]!, files: [PortfolioDocumentFileInput!]): PortfolioDocument + + """""" + deletePortfolioDocuments(portfolioDocumentIds: [UUID]!): Boolean! + + """""" + createPortfolioDocumentComment(userId: UUID!, senderId: UUID!, portfolioDocumentId: UUID!, parentId: UUID, text: String!, documentDate: DateTime!): PortfolioDocumentComment! + + """""" + deletePortfolioDocumentComment(portfolioDocumentCommentId: UUID!, portfolioDocumentId: UUID!): Boolean! + + """""" + createPortfolioDocumentReaction(userId: UUID!, senderId: UUID!, portfolioDocumentId: UUID!, portfolioReactionId: UUID!, documentDate: DateTime!): PortfolioDocumentReaction! + + """""" + deletePortfolioDocumentReaction(portfolioDocumentReactionId: UUID!, portfolioDocumentId: UUID!): Boolean! + + """""" + updatePortfolioDocumentComment(portfolioDocumentCommentId: UUID!, text: String!): PortfolioDocumentComment! + + """""" + updatePortfolioDocumentReaction(portfolioDocumentReactionId: UUID!, portfolioReactionId: UUID!): PortfolioDocumentReaction! + + """""" + saveStudentSoftSkillGoals(studentSoftSkillGoalInputs: [StudentSoftSkillGoalInput!]!): [StudentSoftSkillGoal]! + + """""" + saveSelfAssessmentAverageValue(selfAssessmentAverageInputList: [SelfAssessmentAverageInput!]!): [SelfAssessmentAverage!]! + + """Пометить результат как просмотренный""" + markTournamentResultAsShown(userTournamentResultIds: [UUID!]!): [UserTournamentResult!]! +} + +"""Пропуски за прошедшие периоды""" +type StudentPastPeriodAttendance { + """Период""" + studyPeriodId: ID! + + """Кол-во пропусков""" + absenceCount: Int! + + """Кол-во пропусков по болезни""" + sicknessAbsenceCount: Int! +} + +""" +Информация по плановым и фактическим трудозатратам студента и его прогрессе за текущий учебный период +""" +type StudentPerformanceDetails { + """Идентификатор ученика""" + studentId: ID! + + """Идентификатор текущего учебного периода""" + studyPeriodId: ID + + """Имя учебного периода (1 четверть)""" + studyPeriodName: String + + """ + Информация по плановым и фактическим трудозатратам студента и его прогрессе за текущий учебный период по предметам, которые есть в плане студента + """ + subjectPerformanceInfoItems: [SubjectPerformanceInfo] +} + +"""Этот enum содержит коды групп учеников по успеваемости.""" +enum StudentPerformanceGroupEnum { + """Отличники""" + EXCELLENT + + """Хорошисты""" + GOOD + + """Отстающие""" + FALLING_BEHIND + + """Нет оценок""" + NOT_RATED +} + +"""Оценки за учебный период""" +type StudentPeriodMarks { + """ID учебного периода""" + studyPeriodId: ID! + + """Оценки""" + marks: [JournalCellMark]! +} + +"""Прогресс ученика по модулям""" +type StudentPersonalProgress { + """Идентификатор студента (students.student_id)""" + studentId: ID! + + """Идентификатор пользователя (users.user_id)""" + userId: ID! + + """Фамилия ученика""" + lastName: String! + + """Имя ученика""" + firstName: String! + + """Отчество ученика""" + middleName: String + + """Логин ученика""" + login: String! + + """Email ученика""" + email: String + + """ + Прогресс прохождения всех модулей в процентах. (пройденные уровени модулей / запланированные уровени модулей) + """ + progress: Int! + + """""" + progressByTrajectory: Int + + """""" + progressByFilter: Int + + """""" + planStartDate: DateTime + + """""" + personalStartDate: Date + + """""" + realStartDate: DateTime + + """""" + personalEndDate: Date + + """""" + realEndDate: DateTime + + """""" + laboriousness: Int + + """""" + laboriousnessDays: Int + + """""" + actualLaboriousness: Int + + """""" + trajectory: String + + """Прогресс по модулям""" + studyModuleProgress: [StudentStudyModuleProgress!]! + + """информация пользователя из АС Пульс""" + pulsePerson: PulsePersonSmallModel + + """Дата последнего входа""" + lastAuthorizationDate: DateTime + + """Формат обучения""" + isStudyOnline: Boolean + + """Имя Буткемп-мастера""" + bootcampMaster: String + + """Город ученика""" + studentCity: String +} + +"""Прогресс ученика по модулям и траекториям""" +type StudentPersonalProgressByTrajectory { + """Идентификатор студента (students.student_id)""" + studentId: ID! + + """Идентификатор пользователя (users.user_id)""" + userId: ID! + + """Фамилия ученика""" + lastName: String! + + """Имя ученика""" + firstName: String! + + """Отчество ученика""" + middleName: String + + """Логин ученика""" + login: String + + """Email ученика""" + email: String + + """ + Прогресс прохождения всех модулей в процентах. (пройденные уровени модулей / запланированные уровени модулей) + """ + progressByTrajectory: Int + + """""" + progressByFilter: Int + + """""" + planStartDate: DateTime + + """""" + personalStartDate: Date + + """""" + realStartDate: DateTime + + """""" + personalEndDate: Date + + """""" + realEndDate: DateTime + + """""" + laboriousness: Int + + """""" + laboriousnessDays: Int + + """""" + actualLaboriousness: Int + + """""" + trajectory: String + + """Прогресс по модулям""" + studyModuleProgress: [StudentStudyModuleProgress] + + """информация пользователя из АС Пульс""" + pulsePerson: PulsePersonSmallModel + + """Дата последнего входа""" + lastAuthorizationDate: DateTime + + """Формат обучения""" + isStudyOnline: Boolean + + """Имя Буткемп-мастера""" + bootcampMaster: String + + """Город ученика""" + studentCity: String +} + +""" +Данные фильтра для эскпорта данных по прогрессу студентов для Отчета БМ +""" +input StudentPersonalProgressExportBTCInput { + """Идентификаторы параллелей""" + stageIds: [ID!]! + + """Идентификаторы классов""" + stageGroupIds: [ID!]! + + """Идентификаторы пользователей""" + userIds: [ID!]! + + """Идентификаторы модулей""" + goalIds: [ID!]! + + """ + Траектории, фильтр по траекториям. Null, если не нужно фильтровать по траекториям + """ + trajectories: [String!] + + """Фильтры""" + filters: [String!] + + """Начало диапазона плановой даты начала обучения""" + planStartDateFrom: Date + + """Конец диапазона плановой даты начала обучения""" + planStartDateTo: Date + + """Формат обучения""" + isStudyOnline: Boolean + + """Буткемп-мастер""" + bootcampMaster: UUID + + """Город ученика""" + studentCity: String +} + +"""Данные фильтра для эскпорта данных по прогрессу студентов""" +input StudentPersonalProgressExportInput { + """Идентификатор школы""" + schoolId: ID! + + """Идентификаторы параллелей""" + stageIds: [ID!]! + + """Идентификаторы классов""" + stageGroupIds: [ID!]! + + """Учебные годы""" + academicYearIds: [ID!]! + + """Идентификаторы пользователей""" + userIds: [ID!]! + + """Идентификаторы модулей""" + goalIds: [ID!]! + + """ + Траектории, фильтр по траекториям. Null, если не нужно фильтровать по траекториям + """ + trajectories: [String!] + + """Фильтры""" + filters: [String!] + + """Начало диапазона плановой даты начала обучения""" + planStartDateFrom: Date + + """Конец диапазона плановой даты начала обучения""" + planStartDateTo: Date +} + +"""Результат эскпорта прогресса учеников в файл""" +type StudentPersonalProgressReport { + """ + Относительный путь к файлу отчета в файловый сервис + null , если отчет не содержит данных + """ + filePath: String + + """ + true , пустой отчет или нет. Null, если объект создает логика ШЦП а не Bootcamp и не знает, что ставить. Значение не определено. + """ + empty: Boolean +} + +""" +тип Персонального Плана обучения, по которому будет идти учебный процесс ученика +""" +type StudentPlan { + """""" + id: ID! + + """ + список Учебных Модулей в Плане с привязкой к датам и необходимому для достижения уровню + """ + modules: [StudentModule!]! +} + +"""Тип содержит комбинацию ИД модуля и ИД системы заданий""" +type StudentPlanGoalWithTaskSet { + """Id модуля""" + goalId: ID! + + """Название модуля""" + goalName: String! + + """Id системы заданий""" + taskSetId: ID! + + """Тип системы заданий""" + playlistType: PlaylistType! + + """Название системы заданий""" + taskSetName: String! + + """Модуль входит только в персональные планы""" + goalFromPersonalPlans: Boolean! + + """ + Признак, что система задания модуля является текущей в данный момент времени. + """ + currentGoal: Boolean! +} + +"""Тип платформы студента - Edu, Intra""" +enum StudentPlatformType { + """ЩЦП или Ш21""" + EDU + + """французская платформа Intra""" + INTRA +} + +"""Фильтр для запроса прогресса учащихся (по пересечению)""" +input StudentProgressFilterBTCInput { + """Идентификаторы параллелей""" + stageIds: [ID!]! + + """Идентификаторы классов""" + stageGroupIds: [ID!]! + + """Идентификаторы модулей""" + goalIds: [ID!]! + + """Идентификаторы пользоваталей""" + userIds: [ID!]! + + """Формат прохождения""" + isStudyOnline: Boolean + + """Буткемп-мастер""" + bootcampMaster: UUID + + """Город ученика""" + studentCity: String + + """Пагинация""" + paging: PagingInput! + + """Имена колонок, которые следует возвращать""" + filters: [String!] + + """ + Траектории, фильтр по траекториям. Null, если не нужно фильтровать по траекториям + """ + trajectories: [String!] + + """Начало диапазона плановой даты начала обучения""" + planStartDateFrom: Date + + """Конец диапазона плановой даты начала обучения""" + planStartDateTo: Date +} + +"""Фильтр для запроса прогресса учащихся (по пересечению)""" +input StudentProgressFilterInput { + """Идентификатор школы""" + schoolId: ID! + + """Идентификаторы параллелей""" + stageIds: [ID!]! + + """Идентификаторы классов""" + stageGroupIds: [ID!]! + + """Идентификаторы модулей""" + goalIds: [ID!]! + + """Идентификаторы пользоваталей""" + userIds: [ID!]! + + """Учебные годы""" + academicYearIds: [ID!]! + + """Сортировка""" + sortingFields: [SortingField!]! + + """Пагинация""" + paging: PagingInput! + + """Имена колонок, которые следует возвращать""" + filters: [String!] + + """ + Траектории, фильтр по траекториям. Null, если не нужно фильтровать по траекториям + """ + trajectories: [String!] + + """Начало диапазона плановой даты начала обучения""" + planStartDateFrom: Date + + """Конец диапазона плановой даты начала обучения""" + planStartDateTo: Date +} + +"""Фильтр для запроса доступных модулей для прогресса учащихся""" +input StudentProgressSearchModulesInput { + """Идентификатор школы""" + schoolId: ID! + + """Учебные годы""" + academicYearIds: [ID!]! + + """Идентификаторы параллелей""" + stageIds: [ID!]! + + """Идентификаторы классов""" + stageGroupIds: [ID!]! + + """Идентификаторы пользоваталей""" + userIds: [ID!]! + + """Идентификаторы предметов""" + subjectIds: [Int!] +} + +"""Проект студента с привязкой к планам""" +type StudentProjectForBA { + """Идентификатор модуля студента (student_goal_id)""" + studentGoalId: ID! + + """Идентификатор задания относительно студента (student_task_id)""" + studentTaskId: ID + + """Информация о модуле""" + project: Goal! + + """Информация о задании""" + task: TaskWithAssignmentType! + + """Начисленный фактический бал выполнения задания""" + finalPoint: Int + + """Максимальный бал за задание (основная секция)""" + pointTask: Int! + + """Дата перевода проекта в текущий статус""" + statusCreationTime: Date + + """Статус проекта студента""" + studentProjectStatus: StudentProjectStatus + + """Процент выполнения""" + finalPercentage: Int + + """Информация о параллели""" + stage: Stage! + + """Информация о классе""" + stageGroup: StageGroup! +} + +"""Информация о проекте студента (в том числе не начатого)""" +type StudentProjectInfo { + """Идентификатор модуля студента (student_goal_id)""" + studentGoalId: ID + + """Идентификатор задания относительно студента (student_task_id)""" + studentTaskId: ID + + """Информация о модуле""" + project: Goal! + + """Информация о задании""" + task: Task + + """Начисленный фактический бал выполнения задания""" + finalPoint: Int + + """Максимальный бал за задание (основная секция)""" + pointTask: Int + + """Ожидаемое время проверки задания в минутах""" + periodOfVerification: Int + + """Дата сброса оценки""" + resetDate: DateTime + + """Дата принудительной проверки""" + forcedDate: DateTime + + """Дата завершения проекта студентом""" + finishDate: DateTime + + """Идентификатор проверяющего""" + forcedVerifierUserId: ID + + """Процент выполнения""" + finalPercentage: Int + + """Статус проекта""" + status: DisplayedGoalStatus + + """Тип проекта (exam, individual..)""" + executionType: ModuleExecutionType +} + +"""DTO со статиской студента по проекту""" +type StudentProjectStatisticModel { + """статус проекта""" + goalStatus: GoalStatus! + + """средняя оценка по проекту""" + finalPoint: Int + + """средняя оценка по проекту""" + finalPointAvgByCampus: Int + + """количество попыток которые использовал студент для сдачи проекта""" + retryCount: Int + + """среднее количество попыток студентов по проекту для сдачи""" + avgRetryCountByCampus: Int + + """остальные члены команды, в случае группового проекта""" + teamMembers: [TeamMember]! + + """время выполнения проекта в часах""" + projectLeadTime: Int + + """среднее время выполнения проекта в часах""" + avgProjectLeadTime: Int + + """количество зарегистрированых студентов на проекте""" + studentsRegisteredCount: Int! + + """количество студентов выполняющих проект""" + studentsPerformingCount: Int! + + """количество студентов закончивших проект""" + studentsFinishedCount: Int! + + """комментарий после прохождения p2p""" + comment: String + + """Полученнный при p2p проверке балл""" + receivedPoint: Int + + """сколько % скилов студент набрал за проект""" + studentSkillPointsOnProject: Int @deprecated(reason: "unused") + + """сколько % скилов всего можно набрать за проект""" + totalAmountSkillPointsOnProject: Int @deprecated(reason: "unused") +} + +"""Статус проекта студента""" +enum StudentProjectStatus { + """Зарегистрирован""" + REGISTERED + + """В процессе прохождения""" + IN_PROGRESS + + """Пройден""" + ACCEPTED + + """Провален""" + FAILED + + """Назначен""" + ASSIGNED +} + +"""Публичный профиль ученика""" +type StudentPublicProfile { + """""" + id: ID! + + """""" + firstName: String! + + """""" + middleName: String + + """""" + lastName: String! + + """""" + avatarUrl: String + + """класс ученика""" + stageGroupName: String + + """классный руководитель""" + formMaster: FormMasterPublicData + + """""" + teachers: [TeacherPublicData!]! + + """""" + parents: [ParentPublicData!]! + + """""" + email: String +} + +"""""" +type StudentQueries { + """ + Получение информации для виджетов закрывающего теста для всех уровней модуля (сейчас только 2.0) + """ + getStudentGoalLevelTestWidgets(goalId: ID!): [StudentGoalLevelTestWidget!]! + + """Получение закрывающего теста по его ID в контексте студента""" + getStudentGoalLevelTest(goalLevelTestId: ID!): StudentGoalLevelTest + + """ + Получить ответы виджетов в рамках определенного закрывающего теста, определенной задачи + """ + getStudentGoalLevelTestWidgetsWithAnswers( + """id попытки закрывающего теста, не путать с id закрывающего теста""" + attemptId: ID! + + """id задачи которую выполнял студент в рамках этой попытки""" + taskId: ID! + ): [GoalLevelTestAttemptTaskWidget] @deprecated(reason: "Рекомендуется getStudentGoalLevelTestAnswers, возвращает не только ответы виджет но и старого конструктора") + + """""" + getStudentGoalLevelTestAnswers( + """id попытки закрывающего теста, не путать с id закрывающего теста""" + attemptId: ID! + + """id задачи которую выполнял студент в рамках этой попытки""" + taskId: ID! + ): StudentGoalLevelTestTaskAttemptAnswers + + """""" + getCalendar(weekStart: String!, weekEnd: String!): Calendar! + + """""" + getDaySchedule(date: String!): [Event!]! + + """""" + getCurrentTasksForCalendar: [StudentTask!]! + + """""" + getSchedule( + """параметр начала диапазона дат для выборки Уроков (в зоне школы)""" + lessonsFromDate: Date! + + """параметр окончания диапазона дат для выборки Уроков (в зоне школы)""" + lessonsToDate: Date! + + """ + параметр начала диапазона дата+время для выборки Контрольных работ (в зоне UTC) + """ + personalControlWorksFromTime: DateTime! + + """ + параметр окончания диапазона дата+время для выборки Контрольных работ (в зоне UTC) + """ + personalControlWorksToTime: DateTime! + ): Schedule! + + """ + Возвращает заметки к уроку для ученика на следующий учебный день (может совпадать с переданной датой) + """ + getLessonNotesForNextSchoolDay( + """параметр даты, относительно которой ищем следующий учебный день""" + lessonsDate: Date! + ): [LessonNoteExtended!]! + + """""" + getNotifications(paging: PagingInput, wasReadIncluded: Boolean): [Notification!]! + + """""" + getNotificationsByTypes( + """""" + typeIds: [ID!]! + + """""" + paging: PagingInput + + """""" + wasReadIncluded: Boolean + + """ + Необязательное поле, при передаче true вернет уведомления только за текущий учебный год + """ + includeOnlyCurrentYearNotifications: Boolean + ): [Notification!]! + + """ + Аналог getNotifications возвращающий только те нотификации, которые имеют привязку к предмету + """ + getDeckWidgetNotificationsByTypes(typeIds: [ID!]!, paging: PagingInput, wasReadIncluded: Boolean): [DeckWidgetNotification!]! + + """""" + getAllWidgetNotificationsByTypes(typeIds: [ID!]!, paging: PagingInput): [DeckWidgetNotification!]! + + """""" + getNotificationsCount(wasReadIncluded: Boolean): Int! + + """Возвращает список Уведомлений ученика, по его заданиям""" + getRecentTaskNotifications( + """типы Уведомлений""" + notificationTypes: [NotificationEnum!]! + + """параметры пагинации""" + paging: PagingInput! + ): RecentTaskNotifications! + + """""" + getStudentProfile: Student! + + """""" + getStudentRoles: GetStudentRolesResponse! + + """""" + getStudentProfileByUserId(userId: UUID!): Student! + + """Возвращает информацию о Гибких навыках с примерами заданий ученика""" + getSoftSkillsAbout: [StudentSoftSkillAbout!]! + + """""" + getTasksByIds(ids: [ID!]!): [StudentTask] + + """""" + getGenericTestTaskById(id: ID!, examEventId: ID): StudentTask! + + """""" + getExamTestStudentAnswer(id: ID!, examEventId: ID!): StudentTaskWidgetAnswers + + """""" + getTaskMessages(taskId: ID!): [TaskMessage!]! + + """ + Возвращает количество непрочитанных текущим пользователем комментариев по заданию. Комментарии пользователя не учитываются + """ + getCountUnreadMessages(taskId: ID!): Int! + + """получение списка отправленных ответов на задание текущим учеником""" + getTaskAnswers(taskId: ID!): [StudentAnswer!]! + + """ + получение списка отправленных ответов на виджеты задания текущим учеником + """ + getTaskWidgetAnswers(taskId: ID!): [StudentTaskWidgetAnswer!]! + + """""" + getPersonalTrajectory(taskId: ID, goalId: ID): PersonalTrajectory + + """""" + getModuleById(goalId: ID!): StudentModule! + + """""" + getInternshipDataById(goalId: ID!): InternshipStudentInfo! + + """""" + getInternshipReviewData(goalId: ID!): InternshipStudentReviewList! + + """""" + getInternshipReviewDataInfo(goalId: ID!): InternshipStudentReviewInfo! + + """""" + getAsapWidgetList: AsapWidgetInfoList! + + """Получение студенческого модуля в контексте студента по идентификатору""" + getStudentModuleByStudentGoalId(studentGoalId: ID!): StudentModule! + + """получение условий выполнения проекта""" + loadTaskEvaluationRules(goalId: ID!): [StudentEvaluationRuleGroup!]! + + """""" + getMotivationBlockByGoalId(id: ID!): MotivationBlock + + """""" + getMotivationBlockSections(id: ID!): [MotivationBlockSection!]! + + """Получение списка школьных психологов""" + getPsychologistEmails: [String!]! + + """""" + getGridOfModulesBySubjectID(subjectId: ID!): [StudentModule!]! @deprecated(reason: "Use getStudentStageSubjects. Will be deleted in 0.12.0") + + """""" + getGridOfModulesBySubjectIDAndStudyPeriodIds(subjectId: ID!, studyPeriodIds: [Int!]!): [StudentModule!]! @deprecated(reason: "Use getStudentStageSubjects. Will be deleted in 0.12.0") + + """ + Возвращает текущие Учебные Модуля Студента + ВНИМАНИЕ!!! Возвращаемый набор данных захардкожен на бэкенде, + при расгирении возвращаемого набора данных необходима доработка на бэке. + """ + getModules: [StudentModulesInSubjectContext!]! @deprecated(reason: "Use getStudentStageSubjects. Will be deleted in 0.12.0") + + """ + Возвращает все запланированные Учебные Модули Студента по всем предметам + """ + getAllPlannedModules: [StudentModule!]! @deprecated(reason: "Use getStudentStageSubjects. Will be deleted in 0.12.0") + + """""" + getPlaylist(goalId: ID!): Playlist! + + """ + Возвращает модули в контексте студента вместе с уровнями для страницы успеваемости + """ + getStudentTaskByModulePlaylist(moduleIds: [ID!]!): [StudentTaskByModulePlaylist!]! + + """""" + getCurrentAcademicYearStudyPeriods: [StudyPeriod!]! + + """ + Возвращает информацию о Предметах Ученика в рамках данного Учебного Года + """ + getCurrentAcademicYearSubjects: AcademicYearSubjects! + + """""" + getStudentDashboard(date: DateTime!): StudentDashboard! + + """Неагрегированый вариант getStudentDashboard""" + getStudentDashboardParts(date: DateTime!): StudentDashboard! + + """ + Возвращает данные, необходимые для запроса getStudentTasks (взаимопроверка STUDENT_BY_STUDENT) + """ + getGroupCheckInfo: GroupCheckInfo! + + """Возвращает Задания в контексте студента по фильтрам""" + getStudentTasks( + """Идентификаторы Студентов (students.student_id)""" + studentIds: [UUID!]! + + """Идентификаторы Учебных Модулей (goals.goal_id)""" + moduleIds: [ID!]! + + """ + Статусы Заданий, по которым фильтруем, если массив пустой считается, что запрос по любому статусу + """ + statuses: [TaskStatusEnum!]! + + """ + Идентификаторы предметов (subjects.subject_id), если массив пустой считается, что запрос по любому предмету + """ + subjectIds: [ID!]! + + """ + Идентификаторы Групп по предмету (stage_subject_groups.stage_subject_group_id), если массив пустой считается, что запрос по любому классу + """ + stageSubjectGroupIds: [ID!]! + + """ + Типы Заданий, по которым фильтруем, если массив пустой считается, что по любому типу + """ + taskTypes: [TaskTypeEnum!]! + + """поля для сортировки""" + sorting: [SortingField!]! + + """параметры пагинации""" + paging: PagingInput! + + """Вернуть задания отправленные на проверку в этом учебном году""" + onlyCurrentYear: Boolean + ): GetStudentTasksResponse! + + """ + Возвращает Задания и нотификации о взаимопроверках в контексте студента по фильтрам + """ + getStudentTasksByFilters( + """Статусы задач для фильтров, если не передается берутся все""" + statuses: [TaskStatusEnum!] + + """Тип проверки таски, если не передается берутся все""" + checkTypes: [TaskCheckEnum!] + + """Идентификаторы Предметов""" + subjectIds: [ID!]! + + """Вернет таски с коментами""" + haveComments: Boolean + + """Вернет задания которые являются долгом по модулю""" + moduleDebt: Boolean + + """Опциональная значение поиска по названию задачи""" + title: String + + """поля для сортировки""" + sorting: [SortingField!] + + """Пагинация Сколько заданий нужно возвращать""" + paging: PagingInput! + ): GetStudentTasksDashboardResponse! + + """""" + getStudentAssessmentsTest(studentId: ID!, stageId: ID!): [SelfAssessmentTest!]! + + """Возвращает класс текущего студента""" + getStudentStageGroup: StageGroup + + """ + Bootcamp-only Возвращает список студентов, которым можно отправить задание на проверку + """ + getStudentsForReview(taskId: ID!): [Student!]! + + """ + Bootcamp-only метод возвращает список заданий отправленных текущему пользователю на ревью P2P + """ + getGivenReviewTasksHistory(includeOnlyCurrentYear: Boolean): [StudentTask!]! + + """ + Bootcamp-only метод возвращает историю ревью текущего пользователя, а так же ответы в статусе "На проверке" + """ + getGivenReviewAnswersHistory(searchString: String!, limit: Int!, offset: Int!): [StudentAnswer!]! + + """ + Bootcamp-only метод возвращает историю ревью текущего пользователя, а так же задания учеников в статусе "Требуется проверка" + """ + getGivenReviewTasksInV4History(searchString: String!, limit: Int!, offset: Int!): [StudentTask!]! + + """ + Bootcamp-only получение истории отправленных текущим студентом заданий на ревью P2P с указанными статусами ответов + """ + getTasksOfMineForReviewHistory(answerStatuses: [AnswerStatusEnum]!, searchString: String!): [StudentTask!]! + + """ + Bootcamp-only получение всех комментариев по задаче, оставленных конкретным студентом, это метод для ревьювера буткемпа + """ + getTaskMessagesForReview(taskId: ID!, studentId: ID!): [TaskMessage!]! + + """Bootcamp: получить ссылку на внешнее задание sbercode""" + getTaskExternalLink(taskId: ID!, studentId: ID!, externalTaskPath: String!, externalSystemCode: String!): String + + """ + получение списка отправленных ответов на ревью (опциально - по заданному статусу) + """ + getTaskAnswersForReview(taskId: ID!, studentId: UUID!, answerStatus: AnswerStatusEnum): [StudentAnswer!]! + + """Возвращает Персональную Контрольную Работу по идентификатору""" + getPersonalControlWorkById( + """ + идентификатор персональной Контрольной Работы (personal_control_works.personal_control_work_id) + """ + personalControlWorkId: ID! + ): PersonalControlWork! + + """Проверить, находится ли таск в траектории или в запланированном модуле""" + isTaskInTrajectoryOrPlannedModule(taskId: ID!): Boolean! @deprecated + + """Вернуть все предметы изучаемые учеником в текущем учебном году""" + getStudentStageSubjects(currentDate: Date!): [StudentStageSubject!]! + + """ + Вернуть предметы изучаемые учеником в текущем учебном году для урока на заданную дату + """ + getSubjectsForLesson(currentDate: Date!): [StudentStageSubject!]! + + """Вернуть все модули по предмету ученика""" + getStudentStageSubjectBySubjectId(subjectId: ID!, currentDate: Date!): StudentStageSubject! + + """Вернуть данные по прогрессу ученика до указанной даты""" + getStudentSubjectInfo( + """дата до которой необходимо получить прогресс""" + currentDate: Date! + ): [StudentStageSubject!]! + + """S21. Запрос записей на проверку студента для выбранного диапазона""" + getMyCalendarBookings(from: DateTime!, to: DateTime!): [CalendarBooking!]! + + """ + S21. Запрос всех предстоящих событий для виджета "Проверки" вплоть до 'to' + Если 'to' не указано, будет подставлено текущее время + 12 часов + Если 'limit' не указан, будет возвращать весь список + """ + getMyUpcomingBookings(to: DateTime, limit: Int): [CalendarBooking!]! + + """S21.Запрос обогащенного события для агенды студента""" + getEnrichedBooking(bookingId: ID!): CalendarBooking! + + """S21. Запрос экзамена для агенды студента""" + getEnrichedCalendar(eventId: ID!): CalendarEvent! + + """ + S21. Запрос обезличенных таймслотов студентов, готовых выполнить проверку + """ + getNameLessStudentTimeslotsForReview(from: DateTime!, to: DateTime!, taskId: ID!): CalendarNamelessTimeSlotResponse! + + """ + S21. Запрос на получение информации о требуемых и запланированных записях на проверку + """ + getTaskReviewCountInfo(taskId: ID!): TaskReviewCountInfo! + + """Запрос событий за период на которые студент не оставил отзыва""" + getCalendarEventsWithoutFeedback(from: DateTime!, to: DateTime!): [CalendarEvent]! + + """ + Получение информации о плановых и фактических трудозатратах студента и его прогрессе за текущий учебный период + """ + getStudentPerformanceDetails: StudentPerformanceDetails! + + """Загрузить оффлайн задания из траектории для текущего студента.""" + getStudentTasksForOfflineTab(currentDate: Date!): [SubjectWithModule!]! + + """Получение рефлексии по итогам модуля""" + getStudentGoalReflection(goalId: ID!): StudentGoalReflection! + + """Получения статусов тултипов по списку модулей""" + getStudentTooltipStatuses(goalIds: [ID!]!): [StudentTooltipStatus!]! + + """Получение реальной оценки трудоемкости задания""" + getStudentEffortEstimation(studentTaskId: ID!): StudentEffortEstimation + + """Проходит ли ученик модуль вне плана""" + isStudentModuleOutOfPlan( + """Идентификатор ученика""" + studentId: ID! + + """Идентификатор модуля(Goal.goalId)""" + goalId: ID! + ): Boolean! @deprecated + + """Получение списка экзаменов""" + getExams( + """Параметры пагинации""" + page: PagingInput + + """Дата начала периода""" + from: DateTime + + """Дата окончаниния периода""" + to: DateTime + ): [Exam!]! + + """Получить заполненный чек-лист по id""" + getFilledChecklistById(filledChecklistId: ID!): FilledChecklist + + """Получить заполненный чек-лист по id проверяемого ответа на задание""" + getFilledChecklistsByStudentAnswerId(studentAnswerId: ID!): [FilledChecklist!]! + + """ + S21. Получение информации о P2P проверке (заполненный чек-лист по ответу студента) + """ + getP2pInfo(filledChecklistId: ID!): FilledChecklist! + + """Загрузить информацию о итогах модуля.""" + getStudentGoalSummary(goalId: ID!): StudentGoalSummary! + + """ + Получить список однокласников, которые делают такое же задание в том же периоде что и ученик. + """ + getClassmatesWithSameTask(taskId: ID!, goalId: ID!): [StudentWithSameTask!]! + + """Получить статус просмотра тултипа по буллингу""" + getStudentBullyingTooltipViewStatus: Boolean! + + """ + Доступен ли для класса ученика емейл психолога для оказания помощи при издевательствах + """ + isPsyEmailExistsByStageGroupId: Boolean! + + """Получить результат выполнения питон-кода внешним сервисом""" + getPythonTranslation(sessionId: String!): PythonTranslationResult! + + """Получение Персональных Целей ученика с определёнными статусами""" + getPersonalObjectivesByStatuses(statuses: [PersonalObjectiveStatusEnum!]!): [PersonalObjective!]! + + """""" + getPersonalObjectivesDetailedByStatuses(statuses: [PersonalObjectiveStatusEnum!]!): [PersonalObjective!]! + + """Получение цели по ее id""" + getPersonalObjectivesDetailedById(id: ID!): PersonalObjective + + """ + Подготовка набора вариантов для новой Персональной Цели ученика, распланированных для разных значений ежедневной нагрузки + """ + prepareNewPersonalObjectiveCatchUpOnSubject(subjectId: ID!): PersonalObjectiveCandidates! + + """Получение информации о состоянии прогресса ученика по предмету""" + getStudentSubjectProgressState(subjectId: ID!): StudentSubjectProgressState! + + """ + Получение детальной информации о состоянии прогресса ученика по предмету (с понедельным планом или детальной информацией по цели) + Выводится детальная информация о цели по отстающему предмету в случае ее наличия или понедельный план с данными по заданиям + """ + getStudentSubjectProgressStateWithDetails(subjectId: ID!): StudentSubjectProgressState! + + """ + Получить список заданий с трудоемкостью и гибкими навыками для попапа на странице "Предметы" + """ + getStudentTasksForCurrentModulePopup(currentDate: Date!): [StudentModuleWithTasksModel!]! + + """Получение информации о команде в групповом задании""" + getProjectTeamMembers(studentTaskId: ID!): ProjectTeamMembers + + """ + Получение формирующихся команд по групповым проектам, в которых текущий пользователь имеет требуемую роль + """ + getTeamsForCurrentUserBy(teamRole: TeamRole!): [ProjectTeamWithMembers!]! + + """ + Получение студентов, которые не состоят в других командах, для выполнения группового задания + """ + getAvailableStudentsForTeam(goalId: ID!): [StudentInvitationInfo!]! + + """Получение списка групп, в которые приглашен студент""" + getMyInvitations: [GroupProjectInfo!]! + + """Получение списка групповых проектов""" + getGroupProjectsWithOpenTeams: [GroupProject!]! + + """Получение настроек периодов группового проекта для тимлида""" + getTeamLeadPeriodSettings(teamLeadUserId: UUID!, goalId: ID!, currentStudentLocalCourseId: ID!, location: LocationEnum!): TeamLeadGoalPeriodSettings + + """ + S21. получение ссылки на публичный студенческий Gitlab проект по данной задаче + """ + getLinkToPublicStudentGitlabProjectByTaskId(taskId: ID!): GitlabLink! + + """ + S21. получение ссылки на приватный студенческий Gitlab проект по данной задаче + """ + getLinkToPrivateStudentGitlabProjectByTaskId(taskId: ID!): GitlabLink! + + """ + S21. получение ссылок на приватный студенческий Gitlab проект и статуса готовности к использованию по данной задаче + """ + getGitlabLinksWithStatus(taskId: ID!): GitlabLinkWithStatus! + + """ + S21. получение ссылки на приватный студенческий Gitlab проект по данному ответу + """ + getLinkToPrivateStudentGitlabProjectByAnswerId(answerId: ID!): GitlabLink! + + """ + S21. получение ссылки на приватный студенческий Gitlab проект по данному ответу + """ + getPrivateGitlabProjectLinkInfoByAnswerId(answerId: ID!): GitlabLinksWithReadinessStatus! + + """S21. получение статуса ответа студента по данной задаче""" + getAnswerStatusById(taskId: ID!): AnswerStatusEnum + + """S21. получение статуса по данной задаче для студента""" + getTaskStatusById(taskId: ID!): TaskStatusEnum + + """ + S21. получение время завершения последнего выполнения задачи студентом из атрибута edu_power_shard.student_tasks.last_need_check_status_time + """ + getModifyTimeByTask(taskId: ID!): DateTime + + """S21 получение всех текущих проектов""" + getCurrentGoals: [GoalDTO!] + + """ + S21. при изменении публичного студенческого проекта Gitlab по задаче возвращает ссылку на него, если не изменился - null + """ + getLinkToRenewedPublicStudentProjectIfAny(taskId: ID!): GitlabLink @deprecated + + """""" + getCurrentTasks: [StudentTask!] + + """Информация о студентах на плане кластера""" + getClusterPlanStudents: ClusterPlanStudents! @deprecated(reason: "do not use. Will be deleted in 29.0") + + """ + Информация о студентах на плане кластера по идентификатору кластера (кабинета) + """ + getClusterPlanStudentsByClusterId(clusterId: ID): ClusterPlanStudents! + + """ + Возвращает список идентификаторов пользователей, у которых любимый предмет (хотя бы один!) входит в данный список + """ + getUserIdsByFavoriteSubjectIds(favoriteSubjectIds: [Int!]!): [UUID!]! + + """Возвращает предметы ученика, участвующие в 'большом вызове'""" + getStudentSubjectsFromBigChallenge: [Subject!]! + + """ + Возвращает список идентификаторов пользователей, у которых увлечение (хотя бы одно!) входит в данный список + """ + getUserIdsByInterests(interests: [String!]!): [UUID!]! + + """Возращает здания кабинетами""" + getBuildings: [Building!]! + + """ + S21. Публичный профиль студента. Возращает здания с кабинетами. Для текущего студента, если schoolId не передан + """ + getBuildingsBySchoolId(schoolId: UUID): [Building!]! @deprecated(reason: "использовать getStudentByLogin") + + """ + S21. Публичный профиль студента. Получение StudentId по Login пользователя, если нет studetnId - EMPTY_UUID + """ + getStudentIdByLogin(login: String!): UUID @deprecated(reason: "использовать getStudentByLogin") + + """ + S21. Публичный профиль студента. Получение SchoolId по Login пользователя, если нет schoolId - EMPTY_UUID + """ + getSchoolIdByLogin(login: String!): UUID @deprecated(reason: "использовать getStudentByLogin") + + """ + S21. Публичный профиль студента. Получение UserId по Login пользователя + """ + getUserIdByLogin(login: String!): UUID @deprecated(reason: "use school21 query") + + """S21. Публичный профиль студента. Получение ссылки на автар по UserId""" + getAvatarByUserId(userId: UUID!): String @deprecated(reason: "use school21 query") + + """S21. Публичный профиль студента. Получение опыта по UserId""" + getExperiencePublicProfile(userId: UUID!): UserExperience @deprecated(reason: "use school21 query") + + """ + S21. Публичный профиль студента. Получение волны (аналог stage_group_name) и формы обучения (аналог stage_name) по StudentId + """ + getStageGroupS21PublicProfile(studentId: UUID!): StageGroupS21 @deprecated(reason: "use school21 query") + + """ + S21. Публичный профиль студента. Получение всех волн (аналог stage_group_name) и форм обучения (аналог stage_name) по StudentId + """ + getStageGroupsS21PublicProfile(studentId: UUID!): [StageGroupS21] @deprecated(reason: "use school21 query") + + """S21. Публичный профиль студента. Получение коалиции по UserId""" + getCoalitionPublicProfile(userId: UUID!): CoalitionMember @deprecated(reason: "use school21 query") + + """S21. Публичный профиль студента. Получение email по UserId""" + getEmailbyUserId(userId: UUID!): String @deprecated(reason: "use school21 query") + + """ + S21. Публичный профиль студента. Получение рабочей станции за которой авторизован студент по его логин + """ + getWorkstationByLogin(login: String!): WorkstationModel @deprecated(reason: "do not use. Will be deleted in 31.0") + + """ + S21. Публичный профиль студента. Получение рабочей станции за которой авторизован студент по идентификатору студента + """ + getWorkstationByUserId(userId: UUID): WorkstationModel @deprecated(reason: "use school21 query") + + """ + S21. Публичный профиль студента. Получение класса в котором авторизован студент по его логину + """ + getClassRoomByLogin(login: String!): ClassRoom @deprecated(reason: "use school21 query") + + """ + S21. Публичный профиль студента. Получение навыков для публиличного профиля + """ + getSoftSkillsByStudentId(studentId: UUID!): [SoftSkillPower!]! @deprecated(reason: "use school21 query") + + """ + S21. Публичный профиль студента. Получение достижений для публиличного профиля + """ + getBadgesPublicProfile(userId: UUID!): [UserBadgeAward!]! @deprecated(reason: "use school21 query") + + """ + S21. Публичный профиль студента. Получение всех доступных достижений пользователя, включая не полученные + """ + getBadgesWithFakePublicProfile(userId: UUID): [UserBadgeAward!]! @deprecated(reason: "use school21 query") + + """ + S21. Публичный профиль студента. Получение списка завершенных проектов с датами завершения + """ + getFinishedGoalsPublicProfile(studentId: UUID!): [GoalFinished!]! @deprecated(reason: "use school21 query") + + """ + получение информации по посещаемости студента в школе и за рабочей станцией, за неделю (пн-вс) входящую в date + """ + getStudentTraffic(login: String!, schoolID: UUID!, date: Date!): StudentTraffic! + + """ + Получение мета информации для подготовки студента к прохождению экзамена + """ + getExamPassingUser(goalId: ID!, examEventId: ID!): ExamPassingUser! + + """ + Проверка наличия у пользователя наличия пропущенных экзаменов (true - он есть, надо показать модальное окно) + """ + isExistSkippedExam: Boolean! + + """ + Получение статуса текущего экзамена студента (если вернул null - текущий или слудеющий экзамен не найден) + """ + getExamStatusInfo(examEventId: Int): ExamStatusInfo + + """ + Получение статуса текущего экзамена студента (если вернул null - текущий или слудеющий экзамен не найден) + """ + getExamTestStatusInfo(examEventId: Int): ExamTestStatusInfo @deprecated(reason: "migrated into mutation handleCurrentExamTask") + + """""" + getExamTask(examEventId: ID!, goalId: ID!, skip: Boolean, next: Boolean): ExamTaskWithStatuses + + """ + Получение статуса проверки автотестов на отправленное экзаменационное задание + """ + getExamAnswerStatus(examEventId: ID!, goalId: ID!, currentLevelId: ID!, taskId: ID!): TaskStatusEnum + + """ + Проверка существования заявки пользователя на расформирование указанной команды + """ + isRequestBeenSentToTeamDisband(teamId: UUID!): Boolean! + + """Включены ли дедлайны для параллели студента?""" + isDeadlinesEnabled: Boolean! + + """Получение списка дедлайнов Ш21 по фильтрам""" + getDeadlines( + """Фильтр по статусам дедлайнов""" + deadlineStatuses: [DeadlineStatus!]! + + """Фильтр по дате дедлайна после указанного времени""" + deadlineFrom: DateTime + + """Фильтр по дате дедлайна до указанного времени""" + deadlineTo: DateTime + + """Поля для сортировки""" + sorting: [SortingField] + + """Пагинация""" + page: PagingInput! + ): [DeadlineStudentInfo]! + + """Получение количество дедлайнов Ш21 по фильтрам""" + getDeadlinesCount( + """Фильтр по статусам дедлайнов""" + deadlineStatuses: [DeadlineStatus!]! + + """Фильтр по дате дедлайна после указанного времени""" + deadlineFrom: DateTime + + """Фильтр по дате дедлайна до указанного времени""" + deadlineTo: DateTime + ): Int! + + """Получить инфо о ближайшем дедлайне, о котором еще не было уведомления""" + getClosestDeadlinePopup: DeadlineStudentInfo + + """Получение полной информации на странице проекта""" + getModuleCoverInformation(goalId: ID!): ModuleCoverInformation @deprecated(reason: "Актуальная версия квери getProjectAttemptEvaluationsInfo_V1") + + """""" + getProjectEvaluationsInfo(studentAnswerId: ID!): ProjectEvaluationsInfo! + + """Получение информации о проверках по проекту""" + getProjectAttemptEvaluationsInfo(goalId: ID!): [ProjectAttemptEvaluationsInfo!]! + + """ + Получение данных о количестве P2P проверок и средней оценке пользователя как ревьюера + """ + getFeedbackStatisticsAverageScore(studentId: UUID!): FeedbackStatisticsAverageScore! + + """Получение истории изменения опыта""" + getExperienceHistoryDate(userId: UUID!, schoolId: ID): UserExperienceHistoryDate! + + """Получение рекомендуемых студенту проектов и курсов""" + getRecommendedProjects(userId: ID!): [StudentItem]! + + """Получение всех завершенных студентом проектов""" + getStudentFinishedProjects(userId: ID!): [StudentItem]! + + """Получение всех текущих проектов студента""" + getStudentCurrentProjects(userId: ID!): [StudentItem]! + + """Получение всех проектов по код-ревью доступных для студента""" + getCodeReviewProjects: CodeReviewProjects! @deprecated(reason: "Will be deleted in 41.0.0") + + """Получить доступные для код-ревью студенческие проекты""" + getAvailableCodeReviewProjects(paging: PagingInput): [CodeReview!]! @deprecated(reason: "getAvailableCodeReviewProjectsV2") + + """""" + getAvailableCodeReviewProjectsV2(paging: PagingInput): AvailableCodeReviews! + + """Получить студенческие проекты в раунде 1 по код-ревью""" + getFirstRoundCodeReviewProjects(paging: PagingInput): [CodeReview!]! + + """Получить студенческие проекты в раунде 2 по код-ревью""" + getSecondRoundCodeReviewProjects(paging: PagingInput): [CodeReview!]! + + """ + Списаны ли CRP со студента за проведение проверки код-ревью + {false} - не списаны + {true} - списаны + """ + getCodeReviewPointChargedOff(goalId: ID!): Boolean! + + """Получение этапа код-ревью по идентификатору учебного модуля студента""" + getCodeReviewRoundsByStudentGoalId(studentGoalId: ID!): [CodeReviewRound!]! @deprecated(reason: "Use getMyStudentCodeReview. Will be deleted in 40.0.0") + + """ + Получение процессов код-ревью студенческого проекта, проводимые другими студентами + """ + getStudentCodeReviewByStudentGoalId(studentGoalId: ID!): [StudentCodeReview!]! + + """ + Получение процессов код ревью студенческого проекта, проводимые другими студентами, с датой начала раунда 2 + """ + getStudentCodeReviews(studentGoalId: ID!): StudentCodeReviewsWithPlaneSecondRound! + + """ + Получение процесса код-ревью + {null} - если студент не проводит код-ревью + """ + getMyStudentCodeReview(studentGoalId: ID!): StudentCodeReview + + """Получение процессов код ревью студенческого проекта по его id""" + getStudentCodeReviewByGoalId(goalId: ID!): StudentCodeReviewsWithCountRound! + + """Получение информации о параллели студента""" + getStudentCurrentStageGroup: Stage @deprecated(reason: "Одному пользователю может соответствовать более одного студента, поэтому используем getStudentCurrentStage") + + """Получение информации о параллели студента""" + getStudentCurrentStage(userId: ID!, schoolId: ID!): Stage + + """Возвращает информацию о текущих и завершенных Домашних Работах ученика""" + getNonExpiredStudentHomeworks( + """ + параметр начала диапазона дат для выборки Домашних Работ (в зоне школы) + """ + deadlineFromDate: Date! + + """ + параметр окончания диапазона дат для выборки Домашних Работ (в зоне школы) + """ + deadlineToDate: Date! + + """Фильтрация по Предмету (может быть пустым)""" + subjectId: ID + ): NonExpiredStudentHomeworksInfo! + + """Возвращает информацию о не завершенных в сорк Домашних Работах ученика""" + getExpiredStudentHomeworks( + """Фильтрация по Предмету (может быть пустым)""" + subjectId: ID + + """Поля для сортировки""" + sorting: [SortingField!]! + + """параметры пагинации""" + paging: PagingInput! + ): ExpiredStudentHomeworksInfo! + + """ + Возвращает информацию о Домашней Работе Ученика или null в случае, + когда Домашняя Работа не содержит доступных в данный момент для данного Ученика заданий, или текстовой заметки + """ + getHomeworkInfoById( + """ИД Домашней Работы""" + homeworkId: ID + ): HomeworkInfo + + """Получение всех проектов по userId и stageGroupId""" + getStudentProjectsByStageGroup(studentId: UUID!, stageGroupId: ID!): [StudentItem]! + + """ + Возвращает урок в контексте конкретного студента с персональной информацией. + """ + getStudentLessonById(lessonId: ID!): StudentLesson! + + """ + Возвращает урок в контексте конкретного студента с сокращенной персональной информацией. + """ + getCurrentStudentLesson(lessonId: ID!): StudentLessonCompact! + + """S21 получение статистики по проекту пользователя""" + getStudentProjectStatistic(goalId: ID!): StudentProjectStatisticModel! + + """ + S21 получение студентов которые выполняют/выполнили тот же проект по проекту пользователя + """ + getStudentByProjectAndCampus(goalId: ID!): StudentsInSameProjectByCampusModel! + + """ + Получение команды, в которой состоит пользователь, выполняющий групповой проект + """ + getProjectTeamWithMembers(goalId: ID!): ProjectTeamWithMembers + + """Получение информации по проверкам проекта""" + getP2PChecksInfo(goalId: ID!): P2PChecksInfo + + """ + Получение одноклассников студента, у которых день рождения в переданную дату + """ + getBirthdayClassmates(filterBirthday: Date!): [User!]! + + """ + Получение статистики по заданиям для dashboard (виджет Чанки-ПМО) облегченный возвращаются только идентификаторы заданий + """ + getTaskStatisticsIds(userId: UUID, subjectIds: [ID]): StudentTaskPmoStatisticsLightweightModel + + """ + Получение статистики для dashboard (виджет Чанки-Лайт) на дату. + Если дата null, то на текущую дату + Если userId null, то для текущего пользователя + """ + getLightTaskStatistics(userId: UUID, atDate: Date): StudentTaskLightStatisticsModel + + """Получить классные и домашние работы по id урока""" + getStudentCurrentLessonCWorkHWorkByLessonId(userId: UUID, lessonId: ID!): StudentCurrentLessonCWorkHWork! + + """Получить желаемый целевой уровень модуля""" + getTargetGoalLevel( + """Модуль для которого загружается целевой уровень""" + goalId: ID! + ): StudentTargetGoalLevel + + """Получение данных для виджета Градусник Light""" + getSubjectsFinalMarks(userId: UUID, atDate: Date, studyPeriodId: ID): [SubjectFinalMarkModel]! + + """Данные для виджета оценок ученика(Лайт)""" + getStudentLightMarks(studentId: ID!, studyPeriodId: ID!): [StudentLightMarkModel!] + + """Данные для виджет Рейтинг ученика""" + getStudentRating(subjectIds: [ID]!, studyPeriodIds: [ID!]): [StudentRatingBySubjectModel]! + + """Получение всей информации для градусников ПМО""" + getStudentThermometerPMO(userId: UUID!): StudentThermometerPMO + + """Получение посещаемости студента""" + getStudentAttendance(studentId: UUID!, subjectIds: [ID!], studyPeriodIds: [ID!], currentPeriodId: ID!): [StudentAttendanceBySubject]! + + """Получение посещаемости студента за текущий год""" + getStudentYearAttendance: [StudentAttendanceBySubject]! + + """ + Возвращает перечень пользователей в соответствии с параметрами и с дополнительными условиями: роль=УЧЕНИК, школы=школа пользователя, который делает запрос + Если параметры для запроса не переданы, то вернет пустой список + """ + getStudentsByParams(userIds: [UUID], stageGroupId: ID): [User]! + + """Возвращает данные для диаграммы Радар (Паутинка)""" + getStudentRadarChartData(userId: UUID, atDate: Date): [StudentRadarChart!]! + + """Возвращает агрегированные данные для диаграммы Радар (Паутинка)""" + getAggregatedStudentRadarChartData(userId: UUID, academicYearId: ID, studyPeriodId: ID): AggregatedStudentRadarChart! + + """ + LIGHT Возвращает итоговую оценку ученика по предмету для учебных периодов + """ + getStudentStudyPeriodFinalMark(subjectId: ID, studyPeriodIds: [ID!]): [StudentStudyPeriodFinalMark]! + + """ + PMO Возвращает итоговую оценку ученика по предмету для учебных периодов + """ + getStudentPmoStudyPeriodFinalMark(subjectId: ID, studyPeriodIds: [ID!]): [StudentStudyPeriodFinalMark]! + + """Получение задач студента по идентификаторам""" + getStudentTasksByIds(tasksIds: [ID!]): [StudentTask] + + """Получить информацию по ретраям студента определенного модуля""" + getGoalRetryInfo( + """Модуль для которого загружается целевой уровень""" + goalId: ID! + ): StudentGoalRetryInfo! + + """Получение статистики по попыткам студента на модуле""" + getGoalAttemptStatistic( + """Модуль для которого загружается статистика""" + goalId: ID! + ): [StudentGoalAttemptStatistic] + + """Возвращает данные для построения дневника ученика""" + getStudentDiary( + """дата начала выборки Уроков (в зоне школы) для дневника""" + fromDate: Date! + + """дата окончания выборки Уроков (в зоне школы) для дневника""" + toDate: Date! + ): StudentDiary! + + """получение прогресса и оценок ученика за четверть""" + getStudentStudyPeriodsPerformance( + """ + идентификаторы четвертей за которые необходима выборка. Если пусто, данные вернутся за "текущий учебный год" + """ + studyPeriodIds: [ID!] + + """""" + attestationPeriodIds: [ID!] + ): [StudentStudyPeriodsPerformanceResponse!]! + + """ + Получить список предстоящих событий в экзаменационной среде Ш21 на текущую дату + """ + getAvailableEventsForToday: [EventInfo!]! + + """Возвращает Задания в контексте студента по фильтрам""" + getStudentTasksByTaskStatus( + """ + Статусы заданий, по которым фильтруем, если массив пустой считается, что запрос по любому статусу + """ + statuses: [TaskStatusEnum!]! + + """Параметр пагинации""" + paging: PagingInput! + ): GetStudentTasksResponse! + + """ + Запрос наиболее длительной домашней работы из дневника за период. + Если возвращает null, значит нет длительной домашней работы. + Длительная домашняя работы та, у которой время выполнения более 20 минут. + """ + getStudentDiaryLengthyHomework( + """Дата начала выборки Уроков (в зоне школы) для дневника""" + fromDate: Date! + + """Дата окончания выборки Уроков (в зоне школы) для дневника""" + toDate: Date! + ): StudentDiaryLengthyHomework + + """ + Возвращает агрегированные данные по навыкам для диаграммы Радар (Паутинка) + """ + getStudentSkillRadarChartData(softSkillId: ID): AggregatedSkillStudentRadarChart! + + """ + Возвращает данные для построения дневника ученика за период с учетом временной зоны + """ + getStudentDiaryByPeriod( + """дата и время начала выборки Уроков (в зоне школы) для дневника""" + fromDateTime: DateTime! + + """дата и время окончания выборки Уроков (в зоне школы) для дневника""" + toDateTime: DateTime! + + """категории событий""" + calendarEventCategoryIds: [Int!] + ): StudentDiary! + + """S21. Поиск одноклассников студента по параллели""" + getStageClassmates(textSearch: String): [User!]! @deprecated(reason: "use school21 query") + + """Возвращает список заявок для вступления в класс""" + getStageGroupStudentRequests(stageGroupId: ID): [StageGroupStudentRequest!]! + + """ + Возвращает список академических лет школы. Если не передать schoolId, выдаст по текущей + """ + getAcademicYears(schoolId: ID): [AcademicYear!]! + + """Получение всех учителей у пользователя(ученика) Иннополиса""" + getInnopolisTeachers: [InnopolisTeacher!]! + + """Получить соответствия критериям""" + getTaskCriteriaValues( + """Идентификатор задания""" + taskId: ID! + + """Идентификатор ученика""" + studentId: ID + + """Подтверждённое соответствие критерию""" + isConfirmed: Boolean + ): [StudentCriteriaValue!]! + + """Получить соответствия критериям по скилам""" + getSkillsTaskCriteriaValues( + """Идентификатор ученика""" + studentId: ID! + ): [SkillsTaskCriteriaValue!]! + + """Получение всех возможных критериев""" + getTaskCriteria( + """Идентификатор задания""" + taskId: ID! + ): [Criteria!]! + + """Получить оценку по критериям""" + getTaskCriteriaGrade( + """Идентификатор задания""" + taskId: ID! + + """Идентификатор ученика""" + studentId: ID! + ): CriteriaRecommendedValue! @deprecated + + """ + Аналог getNotifications возвращающий только те нотификации, которые имеют привязку к предмету и текущему учебному году + """ + getDeckWidgetNotificationsForCurrentAcademicYear(typeIds: [ID!]!, paging: PagingInput, wasReadIncluded: Boolean): [DeckWidgetNotification!]! + + """ + Получение материалов к домашнему заданию и к уроку по идентификатору урока + """ + getMediatekaContentByLessonId(lessonId: ID!): StudentMaterialsForLessonModel! + + """ + Получить список справочников портфолио по ID категории документа (с возможностью фильтрации по type и value) + """ + getPortfolioFieldValueListByDocumentCategoryId( + """Идентификатор категории документа""" + documentCategoryId: ID! + + """Тип значения справочника""" + types: [String] + + """Значение справочника""" + values: [String] + ): [PortfolioFieldValueList!]! + + """ + Получить список справочников портфолио (с возможностью поиска по documentCategoryIds, type и value) + """ + getPortfolioFieldValueLists( + """Идентификаторы категории документа""" + documentCategoryIds: [UUID!] + + """Типы значения справочника""" + types: [String!] + + """Значения справочника""" + values: [String!] + ): [PortfolioFieldValueList!]! + + """Получить список бейджей за достижения ученика по userId""" + getUserPortfolioBadgesByUserId(userId: UUID!): UserPortfolioBadges! + + """Получить список всех существующих бейджей""" + getAllPortfolioBadges: [PortfolioBadge]! + + """Возвращает полную информацию о студенте по userId""" + getStudentsInfo(userId: [UUID!]!): [Student!]! + + """Получить справочник категорий документов портфолио""" + getPortfolioCategories: [PortfolioDocumentCategory!]! + + """Получить данные документа/документов портфолио""" + getPortfolioDocuments( + """Раздел или подраздел, где расположен документ""" + documentCategory: String + + """Тип документа""" + documentType: String + + """all/last/first""" + documentAmount: String + ): [PortfolioDocument] + + """Получить комментарии и реакции документов портфолио""" + getPortfolioDocumentReactionsComments( + """Раздел или подраздел, где расположен документ""" + documentCategory: String + + """Тип документа""" + documentType: String + + """Получить реакции конктреного документа""" + portfolioDocumentId: String + ): [PortfolioDocumentReactionsComments] + + """Получить данные документа/документов портфолио другого пользователя""" + getPortfolioDocumentsAnotherUser( + """Идентификатор пользователя""" + userId: UUID + + """Раздел или подраздел, где расположен документ""" + documentCategory: String + + """Тип документа""" + documentType: String + + """all/last/first""" + documentAmount: String + ): [PortfolioDocument] + + """ + Получить комментарии и реакции документов портфолио другого пользователя + """ + getPortfolioDocumentReactionsCommentsAnotherUser( + """Раздел или подраздел, где расположен документ""" + documentCategory: String + + """Тип документа""" + documentType: String + + """Получить реакции конктреного документа""" + portfolioDocumentId: String + + """Идентификатор пользователя""" + userId: UUID! + ): [PortfolioDocumentReactionsComments] + + """Получить все ключевые слова для формирования промпт-строк""" + getAllPortfolioAvatarPromptDetails: [PortfolioAvatarPromptDetailModel]! + + """Получить данные для аналитического виджета""" + getAnalyticsDataAcademicPerformance( + """Дата начала периода аналитики""" + startDate: DateTime! + + """Дата окончания периода аналитики""" + endDate: DateTime! + + """текущая роль""" + currentRole: String + ): AnalyticsDataAcademicPerformance + + """Получение заданий на взаимопроверку учеником""" + getReviewedStudentTasks(subjectIds: [ID!]!): [StudentTask!]! + + """""" + getStudentSoftSkillGoals: [StudentSoftSkillGoal!]! + + """Получение email на класс для помощи студентам Bootcamp""" + getStageGroupHelpEmail(stageGroupId: ID!): StageGroupHelpEmailModel + + """ + метод возвращает одну studentTaskModel с ответом и контентом проверяемого ученика в статусе "На проверке" + """ + getTaskForReview(studentId: UUID!, taskId: ID!): StudentTask + + """Возвращает ссылку на вебинар в Webinar.ru""" + getWebinarRuLink(lessonPlanId: ID!): String! + + """получение статуса задания студента по id""" + getTaskStatusByStudentTaskId(studentTaskId: String!): TaskStatusEnum + + """отправить запрос в GigaChat и получить ответ""" + getGigaChatResponse(messages: [GigaChatMessageInput!]!): [GigaChatResponse!]! + + """получение параметров для прокторинга""" + getProctoringParameters( + """id события""" + examId: ID! + + """Ссылка на прохождение экзамена в системе""" + sessionURL: String! + ): ProctoringParameters! + + """Все бейджи, с флагом, выданные или нет""" + getBadges: [UserBadgeAward!]! + + """ + Полученные бейджи, отсортированные по дате выдачи(сначала новые) + Если limit=null, то возвращаются все + """ + getLastBadges(limit: Int): [UserBadgeAward!]! + + """История получения бейджей""" + getBadgeHistories: [UserBadgeAwardHistory!]! + + """Все мои награды""" + getAwards(awardType: AwardTypeEnum): [UserAward!]! + + """Награды, отсортированные по дате выдачи(сначала новые)""" + getLastAwards(limit: Int!, awardType: AwardTypeEnum): [UserAward!]! + + """История получения наград пользователем""" + getAwardHistories: [UserAwardHistory!]! + + """ + Полученные шмотки, отсортированные по дате выдачи(сначала новые) + Если limit=null, то возвращаются все + """ + getLastEquipments(limit: Int): [UserEquipmentAward!]! + + """Все полученные шмотки текущего пользователя""" + getEquipments: [UserEquipmentAward!]! + + """Рендомная шмотка из справочника шмоток""" + getRandomEquipment: Equipment + + """Рендомный бейдж из справочника бейджей""" + getRandomBadge: Badge + + """Опыт пользователя""" + getExperience: UserExperience! + + """Просмотр опыта другого студента""" + getUserExperience(userId: ID!): UserExperienceShort! + + """Просмотр надетого снаряжения другого студента""" + getUserDressedEquipment(userId: ID!): [UserEquipmentAward!]! + + """""" + getExperienceHistory: [UserExperienceHistory]! + + """""" + getAvatars: [UserAvatar!]! + + """""" + getAvatarHistories: [UserAvatarHistory!]! + + """""" + getUserBgStickers: [UserBgSticker!]! + + """""" + getExperienceWithValueSomeDaysAgo(daysAgo: Int!): UserExperience! + + """История получения награды пользователем""" + getAwardHistoryById(awardId: ID!): [UserAwardHistory!]! + + """""" + getBadgeHistoryById(badgeId: ID!): [UserBadgeAwardHistory!]! + + """""" + getAvatarHistoryById(avatarId: ID!): [UserAvatarHistory!]! + + """ + Возврашает краткую информацию о прогрессе студента по текущему пользователю + """ + getShortStudentProgress: ShortStudentProgress! + + """ + Возврашает краткую информацию о прогрессе студента по текущему пользователю для Bootcamp + """ + getShortStudentProgressForBTC: ShortStudentProgress! + + """Запрос результатов участия студента в турнирах""" + getTournamentResults(isShown: Boolean!): [UserTournamentResult!]! + + """Турнир для студента""" + getCurrentTournament: GameTournament! + + """Ранг текущего студента и ранги ТОП-5 участников коалиции в турнире""" + getTop5AndMeCoalitionTournamentMembers(gameCoalitionId: Int!, gameTournamentId: Int!): Top5AndMeCoalitionTournamentMembers! + + """Ранг текущего студента коалиции в турнире""" + getStudentRankInTournament(gameTournamentId: Int!): CoalitionMemberPowerRank + + """Коалиция по ID""" + getSchoolGameCoalition(gameCoalitionId: Int!): GameCoalition + + """""" + getUserTournamentWidget(userId: UUID, schoolId: ID): UserTournamentWidget! + + """ + Возвращает текущий турнир. Если текущего нет, возвращает последний турнир ученика. Либо null если нет обоих + """ + getCurrentOrLastTournament: GameTournament + + """Просмотр истории изменения кол-ва coins""" + getUserCoinsHistory: [UserCoinsHistoryItemModel!] + + """Статистика. Успеваемость ученика""" + getStudentAcademicPerformance(startDate: DateTime!, endDate: DateTime!, subjectId: Int, currentRole: String): [StudentAcademicPerformance!]! @deprecated(reason: "Использовать getStudentAcademicPerformanceExpandedV2") + + """""" + getStudentAcademicPerformanceExpanded(startDate: DateTime!, endDate: DateTime!, currentRole: String): [StudentAcademicPerformanceExpanded!]! + + """""" + getStudentAcademicPerformanceExpandedV2(startDate: DateTime!, endDate: DateTime!, subjectId: Int, currentRole: String): [StudentAcademicPerformanceExpandedV2!]! + + """Статистика. Успеваемость ученика. Выгрузка в Excel""" + downloadStudentAcademicPerformanceExcel(startDate: DateTime!, endDate: DateTime!, reportDateTime: String!, currentRole: String): ReportExcelFile! + + """Статистика. Успеваемость ученика расширенная. Выгрузка в Excel.""" + downloadStudentAcademicPerformanceExpandedExcel(startDate: DateTime!, endDate: DateTime!, subjectId: Int, reportDateTime: String!, currentRole: String): ReportExcelFile! + + """ + Статистика. Успеваемость ученика расширенная по аттестационным периодам. Выгрузка в Excel. + """ + downloadStudentAcademicPerformanceByAttestationPeriodExpandedExcel(startDate: DateTime!, endDate: DateTime!, closeModuleDate: Date!, subjectId: Int, reportDateTime: String!, currentRole: String): ReportExcelFile! + + """ + Статистика. Успеваемость ученика по модулям за год по аттестационным периодам. Выгрузка в Excel. + """ + downloadStudentModulePerformanceByAttestationPeriodExcel(startDate: DateTime!, endDate: DateTime!, reportDateTime: String!, currentRole: String): ReportExcelFile! @deprecated(reason: "Под удаление. EDU-48885") + + """""" + getStudentsMarksSubjectsDetailed(studyPeriodId: Int!): StudentFinalMarkSubjectsModel! + + """ + Отчет "Итоговые оценки. Детальный" по ученику и всем предметам с датами + """ + getStudentsMarksSubjectsDetailedByDates(periodStartDate: Date!, periodEndDate: Date!, currentRole: String): StudentFinalMarkSubjectsModel! + + """Отчет "Итоговые оценки. Детальный" с датами Выгрузка в Excel""" + downloadStudentsMarksResultDetailedExcel(periodStartDate: Date!, periodEndDate: Date!, reportDateTime: String!, academicYearId: ID, currentRole: String): ReportExcelFile! + + """ + Отчет "Успеваемость по эл.журналу" + """ + getStudentJournalPerformance(stageId: Int!, studyPeriodId: Int!): [StudentJournalPerformance!]! + + """Отчет "Успеваемость по эл.журналу" выгрузка в Excel""" + downloadStudentJournalPerformanceExcel(studentJournalPerformanceExcelInput: StudentJournalPerformanceExcelInput!): ReportExcelFile! + + """Отчет "Успеваемость" выгрузка в Excel успеваемости по модулям за год""" + downloadStudentModulePerformanceExcel(startDate: DateTime!, endDate: DateTime!, reportDateTime: String!, currentRole: String): ReportExcelFile! + + """Отчет "Успеваемость" по Аттестационным периодам""" + getStudentAcademicPerformanceByAttestationPeriod(startDate: DateTime!, endDate: DateTime!, closeModuleDate: Date!, subjectId: Int, currentRole: String): [StudentAcademicPerformance!]! + + """Отчет "Успеваемость" по Аттестационным периодам расширенный""" + getStudentAcademicPerformanceByAttestationPeriodExpanded(startDate: DateTime!, endDate: DateTime!, closeModuleDate: Date!, subjectId: Int, currentRole: String): [StudentAcademicPerformanceExpandedV2!]! +} + +"""Данные для диаграммы Радар""" +type StudentRadarChart { + """ID предмета для класса""" + stageSubjectGroupId: ID! + + """Предмет Студента""" + subject: Subject! + + """ + План, по которому студент изучает предмет (персональный или на группу по предмету) + """ + plan: StudentPlan + + """Количество модулей, по которым установлен целевой уровень""" + numberOfTargetedModules: Int! + + """Количество модулей, по которым достигнут целевой уровень""" + numberOfAchievedModules: Int! + + """Признак вероятности провала сроков сдачи""" + probability: Boolean! +} + +"""Агрегированные данные по навыку для диаграммы Радар (Паутинка)""" +type StudentRadarChartBySkill { + """""" + skillId: ID! + + """""" + skillName: String! + + """""" + skillDescription: String + + """""" + skillShortDescription: String + + """""" + skillGroupName: String + + """""" + skillGroupDescription: String + + """""" + maxTaskCount: Int! + + """""" + completedTaskCount: Int! + + """""" + goalLevelForSkill: Float + + """""" + level3CompletedTasksCount: Int! + + """""" + level4CompletedTasksCount: Int! +} + +"""Агрегированные данные по предмету для диаграммы Радар (Паутинка)""" +type StudentRadarChartBySubject { + """Предмет""" + subject: Subject! + + """Средний уровень по предмету""" + averageAchieveLevel: Float! +} + +"""""" +type StudentRatingBySubjectModel { + """""" + stageSubjectGroupId: ID! + + """""" + subjectId: ID! + + """""" + finalMarks: [JournalFinalStudentMark]! +} + +"""""" +type StudentRole { + """""" + id: ID! + + """""" + schoolId: ID! + + """""" + productId: ID + + """""" + orgUnitId: ID + + """""" + userId: ID + + """""" + school: SafeSchool! + + """""" + status: RoleStatus! + + """класс ученика""" + stageGroup: StageGroup + + """дата активации роли""" + dateStart: DateTime + + """дата деактивации роли""" + dateEnd: DateTime + + """дата выпуска""" + graduationDateTime: DateTime + + """основная информация по родителям""" + parentUserInfo: [ParentUserInfo!]! + + """является ли роль дефолтной при входе пользователя в приложение""" + isDefault: Boolean! + + """название роли""" + role: ROLES! + + """Информация о выпуске/отчислении""" + dismissInfo: StudentDismissInfo + + """Статус ученика""" + studentStatus: StudentStatus + + """Ш21. Ограничения ученика""" + studentRestrictions: [UserRestriction] +} + +"""""" +input StudentRoleInput { + """""" + id: ID + + """""" + schoolId: ID! + + """""" + status: RoleStatus + + """класс (stage_group) ученика""" + stageGroup: StageGroupInput + + """""" + temporaryRoleInput: TemporaryRoleInput + + """""" + isGraduate: Boolean! +} + +"""""" +type StudentSchoolMetrics { + """""" + studentFullName: String! + + """""" + stageGroupName: String! + + """""" + metricName: String! + + """""" + entries: [SchoolMonitoringEntry!] +} + +"""Фильтр для запроса кол-ва учеников для прогресса в Bootcamp""" +input StudentSearchCountFilterBTCInput { + """Идентификаторы параллелей""" + stageIds: [ID!]! + + """Идентификаторы классов""" + stageGroupIds: [ID!]! + + """Траектории""" + trajectories: [String] + + """Начало диапазона плановой даты начала обучения""" + planStartDateFrom: Date + + """Конец диапазона плановой даты начала обучения""" + planStartDateTo: Date + + """Формат прохождения""" + isStudyOnline: Boolean + + """Буткемп-мастер""" + bootcampMaster: UUID + + """Город ученика""" + studentCity: String +} + +"""Фильтр для запроса кол-ва учеников для прогресса""" +input StudentSearchCountFilterInput { + """Идентификатор школы""" + schoolId: ID! + + """Идентификаторы параллелей""" + stageIds: [ID!]! + + """Идентификаторы классов""" + stageGroupIds: [ID!]! + + """Учебные годы""" + academicYearIds: [ID!]! + + """Траектории""" + trajectories: [String] + + """Начало диапазона плановой даты начала обучения""" + planStartDateFrom: Date + + """Конец диапазона плановой даты начала обучения""" + planStartDateTo: Date +} + +"""Фильтр для запроса учеников""" +input StudentSearchFilterInput { + """Идентификатор школы""" + schoolId: ID! + + """Идентификаторы параллелей""" + stageIds: [ID!]! + + """Идентификаторы классов""" + stageGroupIds: [ID!]! + + """Учебные годы""" + academicYearIds: [ID!]! + + """Поиск по ФИО""" + textSearch: String! + + """Сортировка""" + sortingFields: [SortingField!]! + + """Пагинация""" + paging: PagingInput! +} + +"""Информация о Гибком навыке, с примерами заданий для его развития""" +type StudentSoftSkillAbout { + """Гибкий навык""" + softSkillType: SoftSkillType! + + """Примеры заданий ученика для развития данного навыка""" + exampleTasks: [Task!]! +} + +"""""" +type StudentSoftSkillGoal { + """Уникальный идентификатор цели студента по мягким навыкам""" + id: ID! + + """Идентификатор студента""" + studentId: UUID! + + """Идентификатор навыка, к которому относится цель""" + softSkillId: ID! + + """Уровень навыка, который студент стремится достичь""" + level: Float! + + """Дата и время создания записи о цели""" + createdTs: DateTime! + + """Дата и время последнего обновления записи о цели""" + updatedTs: DateTime! +} + +"""""" +input StudentSoftSkillGoalInput { + """Идентификатор студента""" + studentId: UUID! + + """Идентификатор навыка, к которому относится цель""" + softSkillId: ID! + + """Уровень навыка, который студент стремится достичь""" + level: Float! +} + +""" +Описание события - перевода ученика между классами +(в пределе - события зачисления в первый по счету класс или выпуск ученика из школы) +""" +type StudentStageGroupTransferInfo { + """идентификатор студента, который был переведен""" + studentId: ID! + + """ + информация о классе, из которого был переведен ученик + null в случае, если ученик добавляется в первый по счету класс или добавляется в класс после исключения/выпуска + """ + stageGroupFrom: StageGroupCommonInfo + + """ + информация о классе, в который был переведен ученик + null в случае, если ученик выпускается из школы или исключается из класса + """ + stageGroupTo: StageGroupCommonInfo + + """дата события""" + transferDate: DateTime! +} + +"""""" +type StudentStageSubject { + """""" + id: ID! + + """Предмет Студента""" + subject: Subject! + + """Прогресс ученика по предмету относительно плана""" + performance: PersonalPerformance + + """ + План, по которому студент изучает предмет (персональный или на группу по предмету) + """ + plan: StudentPlan + + """Учитель, который ведет предмет у ученика""" + subjectTeacher: Teacher! + + """Следующий урок у ученика по данному предмету""" + nextLesson: StudentLesson + + """Уроки по данному предмету у ученика на сегодня""" + currentDaySubjectLessons: [StudentLesson!]! + + """Следующая контрольная работа по данному предмету""" + nextControlWork: PersonalControlWork + + """Завершенная контрольная работа по данному предмету""" + closedControlWork: PersonalControlWork +} + +"""""" +type StudentStageSubjectStudyPeriod { + """""" + id: ID! + + """""" + stageSubjectId: ID + + """""" + studyPeriodId: ID! + + """""" + studyPeriod: StudyPeriod! + + """""" + mark: SchoolMark + + """""" + recommendedMark: Float + + """""" + personalPlanCompletionPercentage: Float + + """""" + classPlanCompletionPercentage: Float + + """""" + modules: [StudentModule!]! + + """""" + externalWorks: [ExternalWork!]! + + """ + Информация о плановых и фактических трудозатратах ученика за этот учебный период + """ + studentPerformanceDetails: StudentPerformanceDetails +} + +"""Текущий статус студента""" +enum StudentStateEnum { + """""" + ALL + + """""" + ACTIVE + + """""" + NOT_ACTIVE + + """""" + BLOCKED + + """""" + EXPELLED + + """""" + FROZEN +} + +"""""" +enum StudentStatus { + """Учится""" + STUDY + + """Выпущен""" + GRADUATED + + """Не настроен""" + NOT_CONFIGURED +} + +"""Статус ученика в группе (ГКпП)""" +enum StudentStatusInGroup { + """ + Статус студентов, которые состоят в группе весь рассматриваемый период времени + или на текущий момент, если период еще длится в настоящем + """ + ACTIVE + + """ + Статус студентов, которые состояли в группе в течение рассматриваемого периода, + но не на момент его окончания или текущий момент, если период еще длится в настоящем + """ + NONACTIVE + + """ + Статус студентов, которые так или иначе состоявших в группе в течение контекстного периода + ACTIVE + NONACTIVE + """ + ALL +} + +"""Информация об уроках за определенную дату""" +type StudentStudyDate { + """Дата в журнале""" + date: Date! + + """Уроки по заданному предмету в этот день""" + lessons: [JournalCell]! +} + +"""Прогресс ученика по модулю""" +type StudentStudyModuleProgress { + """Идентификатор модуля (goals.goal_id)""" + studyModuleId: ID! + + """Наименование модуля""" + moduleName: String! + + """Наименование предмета""" + subjectName: String! + + """Целевой уровень по модулю""" + plannedLevel: Float! + + """Достигнутый уровень в модуле""" + achievedLevel: Float +} + +"""""" +type StudentStudyPeriodFinalMark { + """""" + studentId: ID! + + """""" + subjectId: ID! + + """""" + studyPeriodId: ID! + + """""" + mark: Int +} + +"""""" +type StudentStudyPeriodWithSubjectThemes { + """Учебный период""" + studyPeriod: StudyPeriod! + + """список Учебных Модулей в Плане относящихся к учебному периоду""" + modules: [StudentModule!]! +} + +"""""" +type StudentStudyPeriodsPerformanceResponse { + """""" + subjectId: ID! + + """""" + marks: [StudentStageSubjectStudyPeriod!]! +} + +""" +Модель показателей успеваемости ученика по предмету за аттестационный период +""" +type StudentSubjectAcademicPerformance { + """""" + studentSubjectAcademicPerformanceForAttestationPeriodId: ID! + + """""" + studentId: ID! + + """""" + stageSubjectId: ID! + + """""" + attestationPeriodId: ID! + + """""" + finalPeriodType: FinalPeriodType! + + """""" + markId: ID + + """""" + mark: SchoolMark + + """""" + markAssigningMethodId: ID + + """""" + markTime: DateTime + + """""" + markTeacherId: ID + + """""" + personalSubjectPlanCompletionPercentage: Float + + """""" + stageSubjectGroupPlanCompletionPercentage: Float + + """""" + recommendedMark: Float + + """""" + recommendedMarkLastRecalculationTime: DateTime + + """""" + externalWorks: [ExternalWork!]! + + """""" + modules: [StudentModule!]! +} + +"""Прогресс ученика по предмету относительно класса""" +enum StudentSubjectProgress { + """Прогресс ученика ниже прогресса класса""" + LOW + + """Прогресс ученика равен прогрессу класса""" + MEDIUM + + """Прогресс ученика выше прогресса класса""" + HIGH +} + +"""Состояние прогресса ученика по предмету.""" +type StudentSubjectProgressState { + """Идентификатор ученика""" + studentId: ID! + + """Идентификатор предмета""" + subjectId: ID! + + """Идентификатор текущего учебного периода""" + studyPeriodId: ID + + """ + Информация о прогрессе ученика по данному предмету за текущий учебный период + """ + subjectPerformanceInfo: SubjectPerformanceInfo + + """Понедельный планы в рамках учебного периода по текущему предмету""" + weekSubjectPlans: [WeekSubjectPlan!] +} + +"""Выбранный студентом целевой уровень модуля""" +type StudentTargetGoalLevel { + """Ид""" + id: ID! + + """Ид студента""" + studentId: UUID! + + """Ид модуля""" + goalId: ID! + + """Желаемый уровень цели модуля""" + targetedGoalLevel: Float! + + """Дата создания""" + createTime: DateTime! + + """Дата изменения""" + modifyTime: DateTime! +} + +"""Задание в контексте Студента с персональной информацией""" +type StudentTask { + """""" + id: ID! + + """идентификатор задания""" + taskId: ID! + + """идентификатор студента""" + studentId: ID! + + """ + Идентификатор группы, с которой связано задание (null, если не связано) + """ + groupId: ID + + """Мета-Задание""" + task: Task! + + """Текущий статус Задания""" + status: TaskStatusEnum! + + """ + Дедлайн Задания (для заданий по ВНЕплановым модулям дедлайном является окончание учебного года, isHardDeadline: false) + """ + taskDeadline: TaskDeadline! + + """Запланированная Студентом Дата выполнения Задания""" + planDate: DateTime + + """Сколько было попыток выполнения Задания""" + retryCount: Int! + + """Оценка по Заданию""" + taskMark: SchoolMark + + """ + Учитель, проверяющий Задание + Может не быть, если задание выполняется в рамках внепланового модуля + """ + teacher: Teacher + + """Ученик, выполняющий Задание""" + student: Student! + + """!= null при самопроверке (самооценке)""" + selfCheckInfo: SelfCheckInfo + + """!= null при взаимопроверке""" + studentByStudentCheckInfo(studentId: ID): StudentByStudentCheckInfo + + """последний отправленный ответ""" + lastAnswer: StudentAnswer + + """список всех ответов студента по заданию""" + answers: [StudentAnswer!]! + + """Результаты прохождения виджетов (ТОЛЬКО ДЛЯ ЗАДАЧ C GENERIC КОНТЕНТОМ)""" + studentTaskWidgets: [StudentTaskWidget!] + + """список комментов по заданию""" + taskMessages: [TaskMessage!]! + + """Признак изменения статуса задания""" + statusModified: Boolean + + """доступно ли Задание на чтение текущему пользователю""" + hasReadAccess: Boolean! + + """Опыта получит за выполнение задания""" + experienceValue: Int! + + """Время изменения""" + modifyTime: DateTime + + """ + Последнее время изменения статуса + Это поле временно необязательное, пока таблица не будет заполнена - EDU-26567 + """ + statusModifyTime: DateTime + + """Время первого просмотра задания учеником""" + firstViewTime: DateTime + + """Группа, в рамках которой студент проходит это задание""" + classSubject: ClassSubject + + """Дата и Время последней отправки Задания на проверку""" + lastNeedCheckStatusTime: DateTime + + """Список оценок по критериям""" + evaluatedTaskCriteria: [EvaluatedTaskCriterion!]! + + """Информация о студенте проверяющем задание в случае взаимопроверки""" + examiningStudent: Student + + """Настройки команды, выполняющей групповой проект""" + teamSettings: TeamSettings @deprecated(reason: "Use StudentModule.teamSettings") + + """Краткая информация о задании в контексте пользователя""" + taskInfo: TaskInfo! + + """Идентификатор проверочной корзины""" + checkBucketId: UUID + + """Внешний конкурс""" + externalCompetition: ExternalCompetition + + """Учитель, проверяющий задание""" + checkingUserId: UUID + + """Дата, когда учитель взял задание на проверку""" + checkingStartDate: DateTime + + """Вопрос по заданию у ученика""" + lastStudentMessage: TaskMessage + + """Количество непрочитанных сообщений к задаче""" + unreadTaskMessagesCount: Int +} + +"""""" +type StudentTaskAdditionalAttributes { + """""" + taskId: ID! + + """""" + cookiesCount: Int! + + """""" + periodOfVerification: Int! + + """""" + reviewUserCount: Int! + + """""" + pointTask: Int + + """Максимальное количество проверяющих (код-ревью)""" + maxCodeReviewCount: Int! + + """Длительность проверки (код-ревью, в минутах)""" + codeReviewDuration: Int! + + """Стоимость проверки (Code Review Points)""" + codeReviewCost: Int! + + """есть ли работа с CI/CD в задании и в каком виде""" + ciCdMode: GitlabCiCdType! +} + +""" +Требуемая информация о заданиях студента, выполнившем задания для страницы, отображающей проверенные задания +""" +type StudentTaskAndTask { + """""" + taskId: ID! + + """""" + studentTaskId: ID! + + """""" + moduleName: String + + """""" + moduleId: ID + + """""" + taskName: String + + """""" + modifyTime: DateTime! + + """""" + status: TaskStatusEnum! +} + +"""Возвращает уровни учебного модуля""" +type StudentTaskByModulePlaylist { + """Идентификатор модуля""" + id: ID! + + """Наименование модуля""" + name: String! + + """Уровни модуля""" + levels: [LevelModule!]! +} + +"""Фильтр поиска Заданий на проверку по времени отправки на проверку""" +enum StudentTaskCheckFilterEnum { + """Без фильтра""" + NONE + + """Только задания на проверке более 3-х дней""" + MORE_3DAYS + + """Только задания на проверке более 7 дней""" + MORE_7DAYS + + """Не подсчитывать задания на проверке и с комментариями""" + NO_COUNT_TASKS + + """Задания на проверке за сегодня""" + TODAY + + """Задания на проверке за неделю""" + WEEK + + """Задания на проверке за месяц""" + MONTH + + """Задания на проверке за учебный год""" + STUDY_YEAR +} + +"""Фильтр поиска Заданий на проверку НЕ по времени по свойствам Заданий""" +enum StudentTaskCheckNonTimeFilterEnum { + """Без фильтра""" + NONE + + """С комментариями""" + WITH_COMMENTS_ONLY +} + +""" +Фильтр поиска Заданий на проверку НЕ по времени по свойствам запрашивающего их Учителя +""" +enum StudentTaskCheckNonTimeTeacherFilterEnum { + """Без фильтра""" + NONE + + """Только для роли Консультирующий учитель (CONSULTING_TEACHER)""" + CONSULT_ONLY +} + +""" +Фильтр-сортировка заданий для вкладки "по ученикам" +""" +enum StudentTaskCheckSortingEnum { + """по фамилии (от "А" до "Я")""" + BY_FIO + + """по количеству заданий (от большего к меньшему)""" + BY_TASK_COUNT +} + +""" +Элемент группировки StudentTask. Например, по студенту: Абрамов_Лев.stage_subject_subgroup_student_id: [его StudentTask] +""" +type StudentTaskGroup { + """ + ключи группировки, например: [BY_STUDENT: Абрамов_Лев.stage_subject_subgroup_student_id] + """ + keys: [StudentTaskGroupKey!]! + + """ + отображаемое имя, например: Абрамов Лев + формируется в зависимости от порядка переданных групп, например: [BY_CLASS, BY_STUDENT] -> "8А-Физика Абрамов Лев" / [BY_STUDENT, BY_CLASS] -> "Абрамов Лев 8А-Физика" + завязываться на фронте на это поле НЕ РЕКОМЕНДУЕТСЯ, лучше формировать нужное представление самостоятельно + """ + displayName: String! + + """найденные Задания в контексте группировки""" + studentTasks: [StudentTask!]! +} + +""" +Тип, связывающий тип группировки с их значением. Также содержит метаинформацию о группировке +Пример: [BY_CLASS: class.id, BY_STUDENT: student.id] +""" +type StudentTaskGroupKey { + """""" + keyType: StudentTaskGroupTypeEnum! + + """ + Представляет из себя ID типа группировки во всех случаях, кроме NONE - у него значение "NONE" + """ + keyValue: String! + + """ + Метаинформация о типе (например, ClassSubject для BY_CLASS) + В случае NONE возвращается null + """ + meta: StudentTaskGroupMeta +} + +""" +дополнительная информация о группировке, резолвится в зависимости от ключа группировки +при группировке BY_CLASS нужна информация о ClassSubject +при группировке BY_STUDENT нужна информация о ClassSubject +при группировке BY_TASK нужна информация о Task +при группировке BY_MODULE нужна информация о StudyModule +при группировке BY_COMPETITION нужна информация о ExternalCompetition +при группировке NONE дополнительная информация не нужна +""" +union StudentTaskGroupMeta = ClassSubject | Task | StudyModule | ExternalCompetition + +"""Тип группировки StudentTask""" +enum StudentTaskGroupTypeEnum { + """ + Группируется по stage_subject_group.stage_subject_group_id (classSubject.id) + """ + BY_CLASS + + """ + Группируется по stage_subject_subgroup_students.stage_subject_subgroup_student_id + Не по student.student_id, потому что возможна ситуация, когда у одного ученика есть задания по нескольким предметам, + а выводиться они должны в разных группах - Абрамов Лев (Литература), Абрамов Лев (Русский язык) + """ + BY_STUDENT + + """Группируется по tasks.task_id""" + BY_TASK + + """Группируется по goals.goal_id (study_module.id)""" + BY_MODULE + + """Группируется по student_tasks.check_bucket_id""" + BY_COMPETITION + + """ + Специальный тип для отсутствующей группировки, все таски буду сложены в группу "NONE" - ["NONE": [все StudentTask]] + """ + NONE +} + +"""Полная информация по Заданию в контексте Студента""" +type StudentTaskInfo { + """Персональная информация по Заданию в контексте Студента""" + studentTask: StudentTask + + """ + Персональная информация по Учебному Модулю в контексте Студента, к которому привязано Задание + """ + studentModule: StudentModule + + """ + Студент в Подгруппе, в рамках которой Студент в данный момент выполняет Задание + """ + subgroupStudent: StudentInSubgroup + + """ + Группа по Предмету, в рамках которой Студент в данный момент изучает Предмет, к которому относится Задание + """ + currentClassSubject: ClassSubject +} + +"""Модель для Чанки Light""" +type StudentTaskLightStatisticsModel { + """""" + amountOfClassWorkTasks: Int! + + """""" + amountOfHomework: Int! + + """""" + amountOfAcceptedTasks: Int! @deprecated(reason: "unused") + + """""" + lessons: [StudentLesson]! @deprecated(reason: "use lessonsCompact") + + """""" + lessonsCompact: [StudentLessonCompact]! + + """""" + homework: [HomeworkInfo]! + + """""" + acceptedTasks: [StudentTask]! @deprecated(reason: "unused") +} + +""" +Статистика по чанкам и таскам по предметам Облегченная версия используется SubjectTaskStatisticsLightweightModel вместо SubjectTaskStatisticsModel +""" +type StudentTaskPmoStatisticsLightweightModel { + """""" + amountWantToDo: Int! + + """""" + amountCanToDo: Int! + + """""" + amountNeedToDo: Int! + + """""" + amountNeedToCheck: Int! + + """""" + amountAccepted: Int! + + """""" + wantToDoTasks: [SubjectTaskStatisticsLightweightModel] + + """""" + canToDoTasks: [SubjectTaskStatisticsLightweightModel] + + """""" + needToDoTasks: [SubjectTaskStatisticsLightweightModel] + + """""" + needToCheckTasks: [SubjectTaskStatisticsLightweightModel] + + """""" + acceptedTasks: [SubjectTaskStatisticsLightweightModel] +} + +"""Успеваемость ученика по системе заданий модуля""" +type StudentTaskSetPerformance { + """Мета информация об ученике, находящемся в группе по предмету""" + student: Student! + + """целевой уровень""" + plannedLevel: Float + + """максимально достигнутый уровень""" + achievedLevel: Float + + """система заданий назначена ученику""" + taskSetAssignedToStudent: Boolean + + """модуль входит в учебный план ученика""" + goalInStudentPlan: Boolean + + """дата начала модуля в персональном плане""" + personalPlanStartDate: DateTime + + """дата окончания модуля в персональном плане""" + personalPlanEndDate: DateTime + + """Id системы заданий в плане ученика""" + personalTaskSetId: ID + + """Тип системы заданий в плане ученика""" + personalPlaylistType: PlaylistType + + """по заданиям системы заданий модуля у ученика есть вопросы""" + hasQuestion: Boolean + + """Признак, что у ученика есть персональный план""" + hasPersonalPlan: Boolean + + """Прогноз прохождения модуля""" + probability: Boolean +} + +"""""" +type StudentTaskStatus { + """id ученика""" + studentId: UUID! + + """статус задания""" + taskStatus: TaskStatusEnum + + """оценка за задание""" + mark: SchoolMark + + """вопрос по заданию у ученика""" + lastStudentMessage: TaskMessage +} + +"""статистика по прохождению заданий по каждому модулю""" +type StudentTaskStatusGroup { + """ID модуля""" + moduleId: ID! + + """количество заданий в каждом статусе""" + studentTaskStatusCounts: [TaskStatusWithQuantity!]! + + """общее количество заданий у учеников (из их траекторий)""" + totalCount: Int! +} + +"""Статус заданий для конкретного задания студента""" +type StudentTaskStatusesMap { + """пара studentId + taskId""" + key: String! + + """статус задания студента""" + value: TaskStatusEnum + + """идентификатор оценки""" + markId: ID +} + +"""""" +type StudentTaskToCheck { + """Задание ученика""" + studentTask: StudentTask! + + """есть непрочитанный комментарий""" + haveComment: Boolean! + + """Число непрочитанных Комментариев""" + countUnreadMessages: Int + + """превысило 3 дня в статусе (для статуса "на проверке")""" + expire3Days: Boolean! + + """превысило 7 дней в статусе (для статуса "на проверке")""" + expire7Days: Boolean +} + +"""""" +input StudentTaskToCheckInput { + """ИД задания для загрузки конкретного studentTask первым элементом""" + taskId: ID! + + """ИД ученика для конкретного studentTask первым элементом""" + studentId: UUID! +} + +"""Результат прохождения виджета пользователем""" +type StudentTaskWidget { + """""" + id: ID! + + """Текущий статус виджета""" + status: TaskWidgetStatusEnum! + + """Идентифкатор виджета в контент-сервисе""" + widgetId: ID! @deprecated(reason: "Use instead contentWidget") + + """""" + widget: ContentBodyWidget! + + """Мета-виджет""" + contentWidget: Widget + + """Дата и время создания""" + createTime: DateTime! + + """Дата и время последней модификации""" + modifyTime: DateTime + + """Ответы на виджет""" + answers: [StudentTaskWidgetAnswer!]! +} + +"""""" +type StudentTaskWidgetAnswer { + """""" + id: ID! + + """Текущий статус ответа""" + status: TaskWidgetAnswerStatusEnum! + + """Тело ответа""" + body: String @deprecated(reason: "Use instead answerBody") + + """Тело ответа""" + answerBody: WidgetAnswerBody + + """Дата и время создания""" + createTime: DateTime! + + """Дата и время последней модификации""" + modifyTime: DateTime + + """файлы""" + files: [File!]! + + """Идентификатор варианта вопроса тренажера""" + variantId: String + + """Идентификатор проверяющего пользователя (взаимопроверка)""" + reviewUserId: UUID + + """Инфо проверяющего пользователя""" + reviewUserInfo: UserInfo + + """Идентификатор проверяющего учителя""" + teacherId: UUID + + """Идентификатор количества заданий во время сохранения ответа""" + amountOfStudentTaskWidget: Int + + """Был ли ли модуль внеплановым во время сохранения ответа""" + plannedGoal: Boolean +} + +"""Результат прохождения виджетов пользователем""" +type StudentTaskWidgetAnswers { + """Результат прохождения виджета пользователем""" + studentTaskWidgets: [StudentTaskWidget] + + """Текущая страница""" + currentPage: Int +} + +"""""" +type StudentTaskWithCounters { + """""" + countStudentAnswers: Int! + + """""" + studentAnswerIds: [ID!] + + """""" + countUnreadMessages: Int! + + """""" + isExpired7Days: Boolean! + + """""" + isExpired3Days: Boolean! + + """""" + lastAnswerDate: Date + + """""" + studentTask: StudentTask! +} + +"""""" +type StudentTasksByStageSubjectGroupForStudentsResponse { + """""" + stageSubjectGroup: StageSubjectGroup! + + """""" + studentCount: Int! + + """""" + studentsWithTasks: [StudentWithTasks!] + + """""" + stageGroupName: String! + + """""" + shortSubjectName: String! + + """""" + subjectName: String +} + +"""""" +type StudentTasksByStageSubjectGroupResponse { + """ + сгруппированные задания на проверке. + Сгруппированы задания на проверке по ИД задания + """ + groupedStudentTasks: [GroupedStudentTaskForTeacher!]! + + """количество групп до пейджинга""" + countOfGroups: Int! +} + +"""""" +type StudentTasksToCheckResponse { + """Задания учеников""" + studentTasks: [StudentTaskToCheck!]! + + """количество заданий учеников""" + studentTaskCount: Int! +} + +"""""" +type StudentTasksWithAnswersAndCommentsCountResponse { + """""" + stageSubjectGroup: StageSubjectGroup! + + """""" + studentTaskCount: Int! + + """""" + tasks: [TaskWithCounters!] + + """""" + stageGroupName: String! + + """""" + shortSubjectName: String! + + """""" + subjectName: String +} + +"""""" +type StudentTasksWithPerformance { + """Задания учеников""" + studentTasks: [StudentTask!]! + + """Успеваемость ученика по системе заданий модуля""" + studentTaskSetPerformance: [StudentTaskSetPerformance!]! + + """ + Количество заданий с определенным статусом и количество заданий с вопросом от ученика + """ + taskStatusQuantityWithQuestion: TaskStatusQuantityWithQuestion +} + +"""Полная информация по Заданиям студентов в контексте ГКпП""" +type StudentTasksWithStageSubjectGroupInfo { + """Название ГКпП""" + stageSubjectGroupName: String + + """Название класса""" + stageGroupName: String + + """Короткое название предмета""" + shortSubjectName: String + + """Полное название предмета""" + fullSubjectName: String + + """Список заданий студентов с информацией по ним""" + studentTaskInfoModels: [StudentTaskInfo!]! +} + +""" +Данные для отчета "Итоговые оценки. Детальный" +""" +type StudentTestPercentDetail { + """""" + test: String! + + """""" + testPercent: Int + + """""" + completed: Date! + + """""" + attached: String +} + +"""""" +type StudentThemesQueries { + """Вернуть учебные периоды с темами""" + getStudentStudyPeriodWithSubjectThemesBySubjectId(subjectId: ID!): [StudentStudyPeriodWithSubjectThemes!]! + + """Получить модуль лайт по айди""" + getModuleLightById(goalId: ID!): StudentModuleLight! + + """Вернуть учебные периоды с темами с учетом фильтра по названию тем""" + getStudentStudyPeriodWithSubjectThemesByTextSearch( + """идентификатор предмета""" + subjectId: ID + + """строка поиска по названию темы""" + textSearch: String + + """только текущие модули""" + onlyCurrent: Boolean + ): [StudentStudyPeriodWithSubjectThemes!]! +} + +"""""" +type StudentThermometerInfoBySkill { + """Идентификатор навыка""" + skillId: ID! + + """Название навыка""" + skillName: String + + """Среднее кол-во выполненных заданий в классе""" + averageCount: Float! + + """Средний процент выполненных заданий в классе""" + averagePercent: Float! + + """Кол-во выполненных заданий студентом""" + studentCount: Int! + + """Максимальное кол-во заданий в модуле""" + maxTaskCount: Int! + + """Статус градусника""" + thermometerPMOStatus: ThermometerPMOStatusEnum! + + """Влияние""" + influence: Float +} + +"""""" +type StudentThermometerInfoBySubject { + """Идентификатор предмета""" + subjectId: ID! + + """Среднее кол-во выполненных заданий в классе""" + averageCount: Float! + + """Средний процент выполненных заданий в классе""" + averagePercent: Float! + + """Кол-во выполненных заданий студентом""" + studentCount: Int! + + """Максимальное кол-во заданий в модуле""" + maxTaskCount: Int! + + """Дедлайн текущего модуля""" + currentModuleDeadline: DateTime! @deprecated(reason: "Use nullable parameter currentModuleDeadlineDate") + + """Дедлайн текущего модуля""" + currentModuleDeadlineDate: DateTime + + """Статус градусника""" + thermometerPMOStatus: ThermometerPMOStatusEnum! + + """Влияние""" + influence: Float +} + +"""""" +type StudentThermometerPMO { + """Информация для градусников ПМО по предметам""" + thermometerInfoBySubjects: [StudentThermometerInfoBySubject!] + + """Информация для градусников ПМО по предметам""" + thermometerInfoBySoftSkills: [StudentThermometerInfoBySkill!] + + """Информация для градусников ПМО по предметам""" + thermometerInfoByDigitalSkills: [StudentThermometerInfoBySkill!] +} + +"""""" +type StudentToBigChallengeV2 { + """id ученика""" + studentId: UUID! + + """статус БВ у ученика""" + bigChallengeStatus: String! + + """дата и время, когда ученик принял БВ""" + bigChallengeStart: String! + + """статус БВ у ученика""" + statusLastChange: String! + + """уровень студента в БВ""" + studentLevel: String! + + """информация о БВ""" + bigChallenge: BigChallengeV2! + + """количество дней до завершения триала""" + trialPeriodDaysLeft: Int + + """""" + finalOverallProgress: Float +} + +"""""" +type StudentToCheck { + """Ученик""" + student: Student! + + """есть непрочитанный комментарий""" + haveComment: Boolean! + + """превысило 3 дня в статусе (для статуса "на проверке")""" + expire3Days: Boolean! + + """дата последнего изменения статуса задания студентом""" + statusChangeDate: DateTime! +} + +"""Статус тултипов студента""" +type StudentTooltipStatus { + """Ид""" + statusId: ID + + """Ид модуля""" + goalId: ID! + + """Просмотрен ли тултип "Понятно" для сохранения рефлексии по модулю""" + reflectionPassTooltipStatus: Boolean! + + """Просмотрен ли тултип "Понятно" для просмотра рефлексии по модулю""" + reflectionReadTooltipStatus: Boolean! + + """Показан ли тултип "Поздравляем" после завершения модуля""" + reflectionCongratulationTooltipStatus: Boolean +} + +"""Статус тултипов студента""" +input StudentTooltipStatusInput { + """Ид""" + statusId: ID + + """Ид модуля""" + goalId: ID! + + """Просмотрен ли тултип "Понятно" для сохранения рефлексии по модулю""" + reflectionPassTooltipStatus: Boolean! + + """Просмотрен ли тултип "Понятно" для просмотра рефлексии по модулю""" + reflectionReadTooltipStatus: Boolean! + + """Показан ли тултип "Поздравляем" после завершения модуля""" + reflectionCongratulationTooltipStatus: Boolean +} + +"""Информация о посещаемости студента за неделю""" +type StudentTraffic { + """Первый день недели""" + startDate: Date! + + """Последний день недели""" + endDate: Date! + + """Информация о посещаемости за день""" + days: [DailyTraffic!]! +} + +"""Траектории назначенные на студента""" +type StudentTrajectorySlug { + """идентификатор студента""" + studentId: ID! + + """строка с перечнем траекторий разделенных запятой""" + trajectorySlugs: String +} + +""" +Данные для формирования траектории обучения студента в классе в соответствие с шаблоном траектории +""" +input StudentTrajectoryTemplateAssignmentInputModel { + """Идентификатор применяемого шаблона траектории""" + trajectoryTemplateId: ID! + + """Признак основной траектории""" + isPrimary: Boolean! + + """Идентификатор класса, в котором будет применяться шаблон""" + stageGroupId: ID! + + """ + Идентификатор студента, по которому будет сформирована траектория в соответствии с шаблоном + """ + studentIds: [ID!]! + + """Плановая дата начала обучения по траектории""" + planStartDate: Date! + + """Способ применения шаблона траектории""" + assignmentMode: TrajectoryAssignmentMode! +} + +"""""" +type StudentUserInfo { + """""" + login: String! + + """""" + studentId: ID! + + """""" + userId: ID! + + """""" + fullName: String! +} + +"""Статус посещения урока студентом""" +enum StudentVisitStatus { + """Отсутствовал""" + ABSENT + + """Болел""" + WAS_ILL + + """Опоздал""" + WAS_LATE +} + +"""""" +type StudentWithLoginModel { + """Идентификатор студента""" + studentId: ID! + + """Логин студента""" + login: String! +} + +""" +Тип содержит информацию об учениках группы по предмету и их группе успеваемости +""" +type StudentWithPerformance { + """Ученик группы по предмету""" + student: Student! + + """Группа успеваемости ученика""" + studentPerformanceGroup: StudentPerformanceGroupEnum! +} + +""" +Модель для возврата данных по однокласникам с тем же заданием. Содержит модель студента и модель задания +""" +type StudentWithSameTask { + """Студент-однокласник у которого в траектории есть задание""" + student: Student! + + """ + Задание в конексте студента, необходимое для отображения статуса однокласнику + """ + studentTask: StudentTask! +} + +"""""" +type StudentWithStageSubjectGroup { + """""" + studentId: ID! + + """""" + studentUserId: UUID! + + """""" + firstName: String! + + """""" + lastName: String! + + """""" + middleName: String + + """""" + stageSubjectGroup: StageSubjectGroup + + """""" + itemsCount: Int! +} + +"""""" +type StudentWithTasks { + """""" + studentTasks: [StudentTaskWithCounters!] + + """""" + studentTaskCount: Int! + + """""" + student: Student! +} + +"""""" +type StudentWithUser { + """""" + studentId: ID! + + """""" + studentUserId: UUID! + + """""" + firstName: String! + + """""" + lastName: String! + + """""" + middleName: String + + """""" + itemsCount: Int! +} + +""" +Данные для отчета "Мониторинг выполнения заданий учениками" +""" +type StudentsGoalsResults { + """""" + levelHeaders: [StudentsGoalsResultsHeader!]! + + """""" + studentAchievements: [StudentsGoalsResultsAchievements!]! +} + +"""""" +type StudentsGoalsResultsAchievements { + """""" + studentName: String! + + """""" + studentId: UUID! + + """""" + studentAchievements: [StudentsGoalsResultsAchievementsItem]! +} + +"""""" +type StudentsGoalsResultsAchievementsItem { + """""" + name: String + + """""" + value: Int! + + """""" + levelName: String + + """""" + levelDescription: String +} + +"""""" +type StudentsGoalsResultsHeader { + """""" + level: String! + + """""" + subLevels: [String!]! +} + +"""""" +type StudentsGoalsTaskAchievements { + """""" + studentName: String! + + """""" + studentId: UUID! + + """""" + studentAchievements: [StudentsGoalsTaskAchievementsItem]! +} + +"""""" +type StudentsGoalsTaskAchievementsItem { + """""" + name: String + + """""" + value: Int! + + """""" + descriptions: [String!] + + """""" + taskTime: DateTime +} + +""" +Данные для отчета "Мониторинг выполнения заданий учениками с состояниями" +""" +type StudentsGoalsTaskStatus { + """""" + levelHeader: StudentsGoalsResultsHeader! + + """""" + studentAchievements: [StudentsGoalsTaskAchievements!]! +} + +"""""" +type StudentsInGroup { + """""" + isActive: Boolean + + """""" + isNew: Boolean + + """""" + studentInSubgroup: StudentInSubgroup! +} + +""" +DTO со студентами выполняющими тот же что проект что и залогиненный студент в его кампусе(и в остальных) +""" +type StudentsInSameProjectByCampusModel { + """студенты которые зарегистрированы на проекте в кампусе студента""" + registeredInMyCampus: [User]! + + """студенты которые выполняют проект в кампусе студента""" + inProgressInMyCampus: [User]! + + """студенты которые выполнили проект в кампусе студента""" + finishedInMyCampus: [User]! + + """студенты которые зарегистрированы на тот же проекте в других кампусах""" + registeredNotInMyCampus: [User]! + + """студенты которые выполняют тот же проект в других кампусах""" + inProgressNotInMyCampus: [User]! + + """студенты которые выполнили проект тот же проект в других кампусах""" + finishedInNotMyCampus: [User]! +} + +""" +Постраничный список студентов в подгруппах (stage_subject_subgroup_students) +""" +type StudentsInSubgroupPage { + """""" + studentsInSubgroups: [StudentInSubgroup!]! + + """общее количество без пагинации""" + total: Int! +} + +"""""" +type StudentsManagement { + """""" + countOfProjects: Int! + + """""" + countOfStudents: Int! +} + +"""Учебный Модуль без персональной информации""" +type StudyModule { + """UUID модуля""" + moduleUUID: UUID! + + """Идентификатор (goals.goal_id)""" + id: ID! + + """Название Учебного Модуля""" + title: String! + + """Предмет, для которого создан Учебный Модуль""" + subject: Subject! + + """Рекомендуемая трудоемкость в часах""" + duration: Int! + + """Параллель, для которой рекомендован Учебный Модуль""" + stage: Stage! + + """Основная идея Учебного Модуля""" + idea: String! + + """Проблема, изучаемая в Учебном Модуле""" + problem: String! + + """Уровни Учебного Модуля""" + levels: [StudyModuleLevel!]! + + """Базовые Плейлисты, созданные для Учебного Модуля""" + taskSets: [TaskSet!]! + + """Есть ли мотивационный блок у модуля""" + motivationBlockPresent: Boolean! + + """Дата создания Учебного Модуля""" + createTime: DateTime! + + """Дата последнего изменения Учебного Модуля""" + modifyTime: DateTime + + """Пользователь, создавший Учебный Модуль""" + createUser: User! + + """Пользователь, который последний раз модифицировал Учебный Модуль""" + modifyUser: User + + """Область видимости""" + scope: ScopeEnum + + """Область видимости""" + preset: ScopePresetEnum @deprecated(reason: "Не используется в бизнес-логике") + + """Количество навыков""" + skillCount: Int! + + """Общее количество Заданий, привязанное к Учебному Модулю""" + taskCount: Int! + + """ + Суммарное количество уникальных Заданий во всех Системах Заданий Учебного Модуля, которые доступны текущему пользователю + """ + availableTasksCount: Int! + + """Количество уровней""" + levelCount: Int! + + """Общий замысел""" + mainIdea: String + + """Типовое распределение заданий по урокам""" + typicalLessonDistribution: String + + """Возможные трудности""" + possibleDifficulties: String + + """Является ли обязательным""" + mandatory: Boolean! + + """Является ли импортированным""" + imported: Boolean + + """Является ли архивированным""" + archived: Boolean + + """Список прикрепленных файлов""" + files: [TaskInfoFile!]! + + """Ссылка на аватар модуля из JCR""" + avatarUrl: String + + """Шаблон модуля""" + landingTemplate: StudyModuleLandingTemplate! + + """Заметка модуля""" + note: String + + """Теги""" + tags: [String!]! @deprecated(reason: "Will be deleted. Use task.contentTags") + + """Награды""" + awards: [ModuleAward!]! + + """информация по скоуп""" + scopeInfo: StudyModuleScopeInfo! + + """доступен ли Учебный Модуль на чтение текущему пользователю""" + hasReadAccess: Boolean! + + """Флаг, означающий участвовал ли модуль в учебном процессе""" + inStudyProcess: Boolean! + + """ + Учительский контекст, в котором содержится информация, на кого назначен этот модуль в тех группах, + в которых учитель ведет. Возвращается null, если текущий пользователь не имеет роль учителя в текущей школе. + """ + assignContext: TeacherStudyModuleAssignContext + + """тип модуля""" + moduleType: ModuleType! + + """Базовый дефолтный плейлист модуля""" + defaultBasePlaylist: TaskSet! + + """ + Версия модуля. Пока что используется только для геймифицированных модулей (moduleType = PMO_CUSTOM) + """ + version: String + + """Тип выполнения""" + executionType: ModuleExecutionType + + """Балл за проект""" + goalPoint: Int + + """Информация о параллелях""" + planStages: [Stage!]! + + """ + Книга, к которой относится данный Учебный Модуль (Тема) ИСПОЛЬЗУЕТСЯ ТОЛЬКО ДЛЯ ЛАЙТ-МОДУЛЕЙ + """ + book: Book + + """ + Рекомендация к названию Учебного Модуля (Темы), + в соответствии с которой этот Учебный Модуль (Тема) был назван ИСПОЛЬЗУЕТСЯ ТОЛЬКО ДЛЯ ЛАЙТ-МОДУЛЕЙ + """ + nameRecommendation: StudyModuleNameRecommendation + + """ + Ссылка на обложку Учебного Модуля (Темы) ИСПОЛЬЗУЕТСЯ ТОЛЬКО ДЛЯ ЛАЙТ-МОДУЛЕЙ + """ + coverUrl: URL @deprecated(reason: "Will be deleted. Use instead bookCoverUrl") + + """ + Ссылка на обложку Учебного Модуля (Темы) ИСПОЛЬЗУЕТСЯ ТОЛЬКО ДЛЯ ЛАЙТ-МОДУЛЕЙ + """ + bookCoverUrl: String + + """Теги, которыми помечен Учебный Модуль""" + contentTags: [ContentTag!] + + """Флаг о наличии мотивирующих заданий в базовом модуле""" + existMotivationTaskInBaseDefaultTaskSet: Boolean + + """группы проектов(Courses), в которых находится данный проект""" + goalCourses: [CourseMeta!] + + """Настройки повторного прохождения проекта (Ш21)""" + retrySettings: ModuleAttemptsSettings + + """Настройки завершающего теста для уровней модулей""" + goalLevelTests: [GoalLevelTest!]! + + """Производственный статус Учебного Модуля""" + productionStatus: ContentEntityProductionStatus + + """История изменений производственного статуса Учебного Модуля""" + productionStatusHistory: [ContentProductionStatusChangeLog!]! + + """Коды учебного модуля во внешней системе""" + externalCodes: [ContentExternalEntityCode!] + + """Настройки формирования команд""" + teamSettings: TeamSettings + + """Наличие связанных StudentModule в процессе прохождения""" + isStartedByStudents: Boolean +} + +"""Элемент Цели (Навык) внутри Уровня Учебного Модуля""" +type StudyModuleGoalElement { + """Идентификатор (skill.skill_id)""" + id: ID! + + """""" + letter: String! + + """""" + number: String! + + """Описание элемента.""" + studentDescription: String! + + """Пример достижения цели (Я могу...)""" + studentExample: String! + + """""" + containsForeignTasks: Boolean + + """""" + tasks: [Task!]! + + """""" + order: Int +} + +"""""" +input StudyModuleGoalElementInput { + """""" + id: ID + + """Для изменения информации по элементу цели""" + levelId: ID + + """Для изменения информации по элементу цели""" + letter: String + + """""" + number: String + + """""" + studentDescription: String! + + """""" + studentExample: String! + + """ + Число для сортировки элементов, абсолютное значение не важно, важно относительное значение + """ + order: Int +} + +""" +Шаблон лендинга для модуля +Simplified in EDU-69256 +""" +type StudyModuleLandingTemplate { + """""" + landingTemplate: LandingTemplate! + + """""" + attributes: StudyModuleLandingTemplateAttributes +} + +"""Атрибуты шаблона лендинга для модуля""" +type StudyModuleLandingTemplateAttributes { + """""" + moduleId: ID! + + """""" + imageUrls: [String!]! +} + +"""""" +input StudyModuleLandingTemplateAttributesInput { + """""" + landingTemplateId: ID! + + """""" + imageUrls: [String!]! +} + +"""Уровни Учебного Модуля""" +type StudyModuleLevel { + """Идентификатор (goal_levels.goal_level_id)""" + id: ID! + + """ + Идентификатор (goal_levels.goal_level_id) дублируем чтобы не возникало проблем с кэшем apollo + """ + levelId: ID! + + """Численное обозначение Уровня Учебного Модуля (2.0, 3.0 и т.д.)""" + level: Float! + + """Элементы Цели с детализацией""" + goalElements: [StudyModuleGoalElement!]! + + """Настройки закрывающего теста для уровня модуля""" + goalLevelTest: GoalLevelTest +} + +"""""" +input StudyModuleLevelInput { + """""" + level: Float! + + """""" + goalElements: [StudyModuleGoalElementInput!]! +} + +"""""" +input StudyModuleMetaInput { + """""" + title: String! + + """""" + subjectId: ID! + + """""" + duration: Int! + + """""" + stageId: Int! + + """""" + idea: String! + + """""" + problem: String! + + """Общий замысел""" + mainIdea: String + + """Типовое распределение заданий по урокам""" + typicalLessonDistribution: String + + """Возможные трудности""" + possibleDifficulties: String + + """Обязательная ли цель""" + mandatory: Boolean! + + """Список файлов""" + files: [TaskInfoFileInput!] + + """Ссылка на аватар модуля из JCR""" + avatarUrl: String + + """ID шаблона модуля""" + landingTemplateId: ID! + + """Информация для установки скоупа""" + scope: ScopeForSet + + """Заметка""" + note: String + + """Тип модуля""" + moduleType: ModuleType! + + """Тип выполнения""" + executionType: ModuleExecutionType + + """ + Идентификатор книги, к которой относится данный Учебный МОдуль (Тема) ИСПОЛЬЗУЕТСЯ ТОЛЬКО ДЛЯ ЛАЙТ-МОДУЛЕЙ + """ + bookId: ID + + """ + Идентификатор рекомендации к названию Учебного Модуля (Темы), + в соответствии с которой этот Учебный Модуль (Тема) был назван ИСПОЛЬЗУЕТСЯ ТОЛЬКО ДЛЯ ЛАЙТ-МОДУЛЕЙ + """ + nameRecommendationId: ID + + """ + Ссылка на обложку Учебного Модуля (Темы) ИСПОЛЬЗУЕТСЯ ТОЛЬКО ДЛЯ ЛАЙТ-МОДУЛЕЙ + """ + coverUrl: URL + + """ + Ссылка на обложку Учебного Модуля (Темы) ИСПОЛЬЗУЕТСЯ ТОЛЬКО ДЛЯ ЛАЙТ-МОДУЛЕЙ + """ + bookCoverUrl: String + + """массив тестов с добавлением в инпуты level: Float""" + goalLevelTests: [GoalLevelTestInput!] +} + +"""Рекомендация к наименованию Учебного Модуля""" +type StudyModuleNameRecommendation { + """Идентификатор рекомендации""" + id: ID! + + """Имя рекомендации""" + name: String! + + """""" + bookId: Int @deprecated(reason: "Use instead bookIds") + + """ + Массив идентификаторов книг, к которым относится рекомендуемое название + """ + bookIds: [Int!] +} + +""" +информация по скоуп +depreacted: использовать ScopeInfo +""" +type StudyModuleScopeInfo { + """""" + scope: ScopeEnum! + + """""" + schoolIds: [ID!]! + + """""" + userIds: [ID!]! + + """""" + schoolIdShortNames: [String] @deprecated(reason: "Не корректное название. Использовать schoolShortNames") + + """""" + schoolShortNames: [String] +} + +"""Учебный период (четверти/семестры...)""" +type StudyPeriod { + """""" + id: ID! + + """Начало учебного периода""" + start: Date! + + """Окончание учебного периода""" + end: Date! + + """Наименовани учебного периода""" + name: String! + + """Является ли учебный период текущим""" + isCurrent: Boolean! + + """признак, рабочий период или каникулы""" + isWorkDays: Boolean! + + """Дата создания учебного периода""" + createTime: DateTime! + + """Дата изменения учебного периода""" + modifyTime: DateTime! + + """Флаг: активный период / удаленный""" + isActive: Boolean! +} + +"""""" +type StudyPeriodDailyStudentSubject { + """""" + subjectId: Int! + + """""" + subjectName: String! +} + +"""""" +input StudyPeriodInput { + """""" + id: ID + + """""" + start: String! + + """""" + end: String! + + """""" + name: String! + + """""" + isWorkDays: Boolean! + + """""" + isActive: Boolean! +} + +""" +Данные для отчета "Оценки по учебным периодам" +""" +type StudyPeriodMark { + """""" + subjectId: Int + + """""" + subjectName: String! + + """""" + studentId: UUID! + + """""" + studentFullName: String! + + """""" + stageSubjectGroup: String! + + """""" + stageGroupId: Int + + """""" + stageGroup: String! + + """""" + teacherFullName: String! + + """""" + teacherId: UUID! + + """""" + entries: [MarkEntry!] +} + +"""Набор учебных периодов""" +type StudyPeriodSet { + """""" + id: ID! + + """Наименование набора учебных периодов""" + name: String! + + """Параллели для которых создан набор учебных периодов""" + stages: [Int!] + + """Учебные периоды в наборе""" + studyPeriods: [StudyPeriod!]! + + """Дата создания периода""" + createTime: DateTime! + + """Дата изменения периода""" + modifyTime: DateTime! + + """Флаг: активный период / удаленный""" + isActive: Boolean! +} + +"""""" +input StudyPeriodSetInput { + """""" + id: ID + + """""" + name: String! + + """""" + stages: [Int!]! + + """""" + studyPeriods: [StudyPeriodInput!]! + + """""" + isActive: Boolean! +} + +"""Данные для отчета Оценки по предмету и параллели""" +type StudyPeriodSubjectMarks { + """""" + headers: [String!]! + + """""" + values: [[String!]!]! +} + +"""Данные для отчета Оценки по предмету""" +type StudyPeriodSubjectSchoolMarks { + """""" + headers: [String!]! + + """""" + values: [[String!]!]! + + """""" + footer: [[String!]!]! +} + +"""Данные для отчета Оценки по учителю и параллели""" +type StudyPeriodTeacherMarks { + """""" + headers: [StudyPeriodTeacherMarksHeader!]! + + """""" + values: [[String!]!]! + + """""" + subjects: [StudyPeriodDailyStudentSubject!] +} + +"""""" +type StudyPeriodTeacherMarksHeader { + """""" + teacherName: String! + + """""" + teacherId: UUID! + + """""" + subjectName: String! +} + +"""""" +type StudyProcessFile { + """Идентификатор файла""" + studyProcessFileId: ID! + + """Ссылка на файл""" + link: String! + + """Статус загрузки""" + status: StudyProcessFileStatusEnum! + + """Описание статуса""" + statusDetails: String + + """Дата создания/обновления""" + updateDateTime: DateTime! + + """Логин студента, который загрузил данный файл""" + creatorLogin: String! + + """Расширение файла без точки""" + fileExtension: String! + + """Размер файла в байтах""" + fileSize: Int +} + +"""S21. Событие для файла с ошибкой или для отменяемого файла""" +input StudyProcessFileFailOrCancelInput { + """Идентификатор файла""" + studyProcessFileId: ID! + + """Причина отмены/фейла""" + detailsMessage: String! +} + +""" +S21. Входные данные для создания файла, который пытаются загрузить в файловый сервис +""" +input StudyProcessFileInitialInput { + """Имя файла""" + fileName: String! + + """Путь к файлу в файловом сервисе""" + relativePath: String! +} + +"""""" +enum StudyProcessFileStatusEnum { + """Не подтверждено""" + NOT_CONFIRMED + + """Загружено""" + UPLOADED + + """Ошибка при загрузке""" + FAILED_TO_UPLOAD + + """Удалено""" + DELETED + + """Отменено""" + CANCELED +} + +"""S21. Событие для файла после загрузки""" +input StudyProcessFileUploadInput { + """Идентификатор файла""" + studyProcessFileId: ID! + + """Размер файла""" + fileSize: Int! +} + +"""""" +type StudyProgram { + """""" + id: ID! + + """академический год""" + academicYear: AcademicYear! + + """список часов и сверхурочных по предмету у класса""" + subjectStudyHours: [SubjectStudyHours!]! + + """статус""" + status: StudyProgramStatus! +} + +"""""" +input StudyProgramInput { + """идентификатор программы. Если пусто - создаем новую""" + id: ID + + """идентификатор академического года""" + academicYearId: ID! + + """список часов и сверхурочных по предмету у класса""" + subjectStudyHours: [SubjectStudyHoursInput!]! + + """статус""" + status: StudyProgramStatus! +} + +"""""" +enum StudyProgramStatus { + """Черновик""" + DRAFT + + """Утверждлен""" + APPROVED +} + +"""Учебная Ступень (начальная школа, средняя школа и т д)""" +type StudyStep { + """Идентификатор (study_steps.study_step_id)""" + id: ID! + + """Название (начальная школа, средняя школа и т д)""" + name: String! + + """Короткое название""" + shortname: String +} + +""" +Предмет, который преподают в рамках Учебной Ступени(начальная школа, средня школа и т д) в конкретной Школе +""" +type StudyStepSubject { + """Предмет""" + subject: Subject! + + """Учебная Ступень (начальная школа, средняя школа и т д)""" + studyStep: StudyStep! + + """""" + stageSubjects: [StageSubject!]! + + """План на Учебную Ступень по Предмету""" + plan: StudyStepSubjectPlan +} + +"""Формы контроля для предмета и уровня образования""" +type StudyStepSubjectLearningActivities { + """Уровень образования""" + studyStep: StudyStep! + + """Формы контроля для предмета""" + subjectLearningActivities: [SubjectLearningActivitiesV2!]! +} + +"""Результат привязки элемента набора к предмету и уровню образования""" +type StudyStepSubjectLearningActivitiesAdditionResult { + """Идентификатор предмета""" + subjectId: ID! + + """Идентификатор уровня образования""" + studyStepId: ID! + + """Идентификатор элемента набора форм контроля""" + learningActivitySetElementId: ID! + + """Сообщение об ошибка, NULL если привязка выполнена""" + errorMessage: String +} + +"""Форма контроля для предмета и уровня образования""" +type StudyStepSubjectLearningActivity { + """Идентификатор формы контроля для предмета и уровня образования""" + id: ID! + + """Предмет""" + subject: Subject! + + """Уровень образования""" + studyStep: StudyStep! + + """Форма контроля""" + learningActivity: LearningActivity! + + """Вес формы контроля""" + weight: Float! + + """Тип формы контроля""" + formControlType: FormControlTypeEnum! + + """Система оценивания""" + governmentMarkType: GovernmentMarkType! +} + +""" +План на Учебную Ступень по конкретному Предмету в конкретной Школе, например +план по английскому языку в школе 1747 по параллелям начальной школы (study_step_subject_plans) +""" +type StudyStepSubjectPlan { + """Идентификатор (study_step_subject_plans.study_step_subect_plan_id)""" + id: ID! + + """Статус плана""" + status: PlanStatusEnum! + + """ + Планы на Параллель в рамках Плана на Cтупень, (план по английскому языку в школе 1747 для 3ей параллели) + """ + plans: [StagePlan!]! +} + +"""Подгруппа по успеваемости внутри Группы по предмету""" +type Subgroup { + """Идентификатор (stage_subject_subgroup.stage_subject_subgroup_id)""" + id: ID! + + """Название подгруппы""" + name: String! + + """Студенты внутри Подгруппы (stage_subject_subgroup_students)""" + students: [StudentInSubgroup!]! + + """ + Флаг - является ли Подгруппа дефолтной (первой подгруппой, в которую попадают все ученики после создания Группы по Предмету и + куда они переводятся при удалении из Подгруппы) + """ + isDefault: Boolean! +} + +"""Студент подгруппы гкпп""" +type SubgroupStudent { + """Идентификатор студента""" + studentId: ID! + + """Имя""" + firstName: String! + + """Фамилия""" + lastName: String! + + """URL аватара""" + avatarUrl: String! +} + +"""""" +type Subject { + """""" + id: ID! + + """""" + name: String! + + """""" + fullName: String + + """""" + colour: String + + """""" + avatar: String + + """""" + orgUnitId: String! + + """""" + tenantShortName: String + + """Тип предмета""" + subjectType: SubjectType + + """""" + tenantId: ID + + """Признак видимости предмета""" + visible: Boolean! +} + +"""""" +type SubjectCategoryProgressV2 { + """Идентификатор категории школьного предмета""" + subjectCategoryId: ID! + + """Название категории школьного предмета""" + name: String! + + """Прогресс""" + progressInfo: ProgressInfo! +} + +"""Общая информация по предмету""" +type SubjectCommonInfo { + """Идентификатор предмета""" + subjectId: ID! + + """Название предмета""" + subjectName: String! +} + +"""Набор параметров для создания материала из каталога""" +input SubjectContentInput { + """Тип дополнительного контента""" + contentType: AdditionalContentType! + + """Полный URL дополнительного материала""" + contentUrl: String! + + """Название дополнительного материала (книги, ссылки...).""" + contentName: String! + + """Описание""" + description: String + + """Издатель материала (например, видеохостинг)""" + contentPublisher: String + + """Автор дополнительного материала (например, автор книги).""" + contentAuthor: String! + + """Идентификаторы предметов, к которым относится данный материал""" + subjectIds: [ID!]! + + """ + Идентификаторы учебной параллели, к которой относится данный материал. + Может быть пусто, если материал не предназначен конкретной параллели + """ + stageIds: [AdditionalContentStage!] + + """Идентификаторы учебных параллелей (Stage), может быть пустым""" + stageIdsV2: [ID!] + + """URL файла предпросмотра дополнительного материала (изображения).""" + previewUrl: String + + """ + Теги материала для загрузки в каталог + deprecated "Use tagsV2" + """ + tags: [String!]! + + """Теги V2""" + tagIdsV2: [ID!] + + """Учебный материал (Учебник)""" + educational: Boolean + + """Информационный материал (Учусь учиться)""" + informational: Boolean + + """Подготовительный материал (Для подготовки к олимпиадам и экзаменам)""" + preparative: Boolean + + """Дата начала""" + startDate: DateTime + + """Дата окончания""" + endDate: DateTime + + """Регионы""" + regions: [UUID!] + + """Онлайн/Офлайн""" + format: AdditionalContentFormat + + """Категории, к которым принадлежит материал""" + categoryIds: [ID!]! + + """Уровень видимости материала""" + scope: ScopeEnum + + """Субтитры для видео""" + subtitleLink: String + + """Ссылка на файл субтитров для определенного языка""" + subtitleLinks: [SubtitleLinkForLanguageInput!] +} + +"""Информация о предметах и классах для публичного профиля учителя""" +type SubjectData { + """""" + subject: Subject! + + """классы, в которых преподает этот предмет""" + stageGroups: [String!]! +} + +""" +Модель для Градусники Light +Итоговая оценка по предмету за период +""" +type SubjectFinalMarkModel { + """""" + subjectId: ID! + + """""" + subjectName: String! + + """""" + studyPeriodId: ID + + """""" + academicYearId: ID! + + """""" + studentAverageMark: Float! + + """""" + subjectGroupAverageMark: Float! + + """""" + subjectStatus: SubjectStatusEnum +} + +"""""" +type SubjectGroupsTeacherResponse { + """""" + subject: Subject! + + """ + считаем или кол-во заданий на проверке в текущем предмете ИЛИ количество классов ГКПП по данному предмету для текущего учителя + """ + counterForCurrentSubject: Int! + + """""" + stageModel: [StageBySubjectResponse!]! +} + +"""""" +type SubjectHours { + """Количество часов по Предмету Учебного Модуля за Учебный Год""" + subjectStudyHoursOfYear: Int! +} + +"""""" +input SubjectInput { + """""" + id: ID + + """""" + name: String! + + """""" + fullName: String! + + """""" + colour: String + + """""" + avatar: String + + """""" + orgUnitId: ID! + + """Тип предмета, если не передано по дефолту будет проставляться USUAL""" + subjectType: SubjectType +} + +"""Формы контроля для предмета""" +type SubjectLearningActivities { + """Предмет""" + subject: Subject! + + """Формы контроля для предмета""" + learningActivities: [LearningActivity!]! +} + +"""Формы контроля для предмета""" +type SubjectLearningActivitiesV2 { + """Предмет""" + subject: Subject! + + """Формы контроля для предмета и уровня образования""" + studyStepSubjectLearningActivities: [StudyStepSubjectLearningActivity!]! +} + +"""""" +type SubjectMarks { + """""" + subjectName: String! +} + +""" +Информация по плановым и фактическим трудозатратам студента и его прогрессе за текущий учебный период по предмету +""" +type SubjectPerformanceInfo { + """Id предмета""" + subjectId: ID! + + """Предмет""" + subject: Subject! + + """Фактический прогресс ученика на сегодняшний день в процентах""" + currentProgressInPercents: Int! + + """ + Ожидаемый прогресс ученика на сегодняшний день с учетом плана в процентах + """ + expectedCurrentProgressInPercents: Int! + + """ + Общая планируемая трудоемкость заданий по предмету за учебный период (content.tasks.laboriousness) + """ + planLaboriousness: Float! + + """ + Трудоемкость входящих в персональную траекторию студента выполненных заданий по предмету за учебный период (content.tasks.laboriousness) + """ + planFactLaboriousness: Float! + + """ + Трудоемкость не входящих в персональную траекторию студента выполненных заданий по предмету за учебный период (content.tasks.laboriousness) + """ + outOfPlanFactLaboriousness: Float! + + """ + Информация о фактических и ожидаемых (для будущих недель) трудозатратам студента, разбитая по неделям в учебном периоде + """ + subjectPerformancePerWeekInfoItems: [SubjectPerformancePerWeekInfo!]! + + """Цель по отстающему предмету""" + personalObjective: PersonalObjective + + """День с начала учебного периода""" + dayInStudyPeriod: Int! +} + +""" +Информация о фактических и ожидаемых (для будущих недель) трудозатратам студента, разбитая по неделям в учебном периоде +""" +type SubjectPerformancePerWeekInfo { + """ + Дата начала недели (для первой недели в периоде - дата начала периода ИЛИ первого модуля + для данного периода, если модуль начинаетя позже. Может быть любым днём недели) + """ + startDate: DateTime! + + """ + Дата окончания недели (для последней недели в периоде - дата окончания периода ИЛИ последнего модуля + для данного периода, если модуль заканчивается раньше. Может быть любым днём недели) + """ + endDate: DateTime! + + """ + Началась-ли на данный момент данная неделя. Также будет true для прошедших недель + """ + weekAlreadyStarted: Boolean + + """ + Суммарная трудоёмкость зачтённых на этой неделе заданий (относящихся к модулям данного учебного периода) + Может включать трудоёмкость дополнительных заданий - + если это последняя неделя последнего модуля в периоде но модуль кончается ДО окончания периода - может включать + трудоёмкость задания которое было зачтено после окончания данной недели/модуля, но до окончаничя периода + Аналогично для случая первой недели первого модуля в периоде и заданиям зачтённым до начала данной недели/модуля + """ + acceptedTasksLaboriousnessTotalMinutes: Int + + """ + Аккумулированная трудоёмкость зачтённых на этой, и всех предыдущих неделях данного учебного периода заданий. + Данное поле - агрегат поля acceptedTasksLaboriousnessTotalMinutes + """ + acceptedTasksLaboriousnessAccumulativeTotalMinutes: Int +} + +"""""" +type SubjectQuery { + """""" + subjectWithProgressByCategory(studentId: UUID!, subjectCategoryId: ID!, bigChallengeId: ID!): ChallengeSubjectV2 +} + +"""Успеваемость по предмету""" +enum SubjectStatusEnum { + """Плохо""" + BAD + + """Хорошо""" + GOOD + + """Отлично""" + PERFECT +} + +""" +Академические Часы в год, выделенные на предмет для определенного класса в определенной школе +""" +type SubjectStudyHours { + """""" + id: ID! + + """Идентификатор предмета""" + subject: Subject! + + """Идентификатор класса""" + classId: ID! + + """Наименование класса (5А)""" + className: String! + + """""" + academicStudyHoursForSubjectPerYear: Int! @deprecated(reason: "используйте academicStudyHoursForSubjectPerWeek") + + """Кол-во урочных академических часов, выделенных на предмет в неделю""" + academicStudyHoursForSubjectPerWeek: Int! +} + +"""""" +input SubjectStudyHoursInput { + """идентификатор записи. Если пусто - создаем новую""" + id: ID + + """""" + subjectId: ID! + + """""" + classId: ID! + + """""" + academicStudyHoursForSubjectPerYear: Int + + """ + количество учебных часов в неделю. по факту поле обязательное, но из-за обратной совместимости сделано необязательным + """ + academicStudyHoursForSubjectPerWeek: Int +} + +"""Информация о задаче, входящей в понедельный план""" +type SubjectTask { + """Идентификатор задачи""" + taskId: ID! + + """Наименование задачи""" + title: String + + """Трудоемкость задачи в минутах""" + laboriousness: Int! + + """Текущий Статус Задания в контексте Студента""" + taskStatus: TaskStatusEnum! + + """Информация о навыках, которыми протегировано данное задание""" + softSkills: [SoftSkillType!] + + """Сквозной порядоковый номер задания согласно плэйлисту""" + order: Int! + + """Краткая информация о задании в контексте пользователя""" + taskInfo: TaskInfo! +} + +""" +Облегченная версия без самих тасок, заместо возвращаются идентификаторы +""" +type SubjectTaskStatisticsLightweightModel { + """""" + subjectId: ID! + + """""" + subjectName: String! + + """""" + amount: Int! + + """""" + tasksIds: [ID] +} + +"""Тип предмета""" +enum SubjectType { + """Обычный предмет""" + USUAL + + """Письменный предмет""" + WRITING + + """Предмет с физической нагрузкой""" + PHYSICAL_EXERCISE +} + +""" +тип агрегированных данных из плана обучения, который напрямую связывает предмет с модулями для конкретного студента. Такакая агрегация нужна для шторы офлайн заданий +""" +type SubjectWithModule { + """Предмет""" + subject: Subject! + + """Модули которые относятся к данному предмету у студента""" + moudulesWithTasks: [StudentModuleWithTasksModel!]! +} + +"""""" +input SubstituteFormMaster { + """Идентификатор класса""" + stageGroupId: ID! + + """Идентификатор пользователя на замену классного руководителя""" + userId: ID! +} + +"""""" +input SubstituteStageSubjectGroupTeacher { + """Идентификатор класса или ГКпП""" + stageSubjectGroupId: ID! + + """Идентификатор учителя на замену""" + teacherId: ID! +} + +"""""" +input SubstituteTeachersInput { + """""" + stageGroupFormMasters: [SubstituteFormMaster!] + + """""" + stageSubjectGroupTeachers: [SubstituteStageSubjectGroupTeacher!] +} + +"""Ссылка на файл субтитров для определенного языка""" +type SubtitleLinkForLanguage { + """Код языка""" + languageCode: String! + + """Cсылка на субтитры для видео""" + subtitleLink: String! +} + +"""Ссылка на файл субтитров для определенного языка""" +input SubtitleLinkForLanguageInput { + """Код языка""" + languageCode: String! + + """Cсылка на субтитры для видео""" + subtitleLink: String! +} + +"""Модель опроса""" +type Survey { + """Идентификатор опроса""" + id: UUID! + + """Название опроса""" + name: String! + + """Дата начала опроса""" + beginDate: DateTime! + + """Дата окончания опроса""" + endDate: DateTime! + + """Идентификатор образовательного учреждения""" + orgUnitId: UUID! + + """Наименование метрики""" + metricId: AcceleratorMetric! + + """Кол-во прошедших опрос""" + countPass: Int! + + """Общее кол-во пользователей в школе""" + countTotal: Int! + + """Кол-во положительных оценок (отлично,хорошо-по СSAT, по NPS 9-10)""" + countPositive: Int! + + """Кол-во нейтральных оценок (только по NPS 7-8)""" + countNeutral: Int + + """ + Кол-во отрицательных оценок (от 0-6 NPS, по CSAT-ужасно, плохо, нормально) + """ + countNegative: Int! + + """Расчетное значение метрики по формуле""" + value: Float! + + """Статус""" + status: String! +} + +"""Статус опроса Акселератора""" +enum SurveyStatus { + """""" + OPEN + + """""" + RUN + + """""" + STOP + + """""" + DELETE + + """""" + FINISH +} + +"""""" +type SystemAdminMigrationResult { + """""" + school21Admins: Int! + + """""" + otherAdmins: Int! +} + +"""""" +type SystemAdminMutations { + """""" + deleteSchool(schoolId: ID!): Boolean + + """ + сохранение школы + schoolId - если null, то создаем новую школу, иначе редактируем + """ + saveSchool(schoolId: ID, schoolUpdate: SchoolUpdateInput!): ValidatedSchool! + + """Создает План на Параллель по Предмету""" + createStagePlan(stageSubjectId: ID!, frames: [StagePlanFrameInput!]!): StagePlan! @deprecated + + """ + Изменяет существующий План на Параллель по ID (stage_subject_plans.stage_subject_plan_id) + """ + changeStagePlan(planId: ID!, frames: [StagePlanFrameInput!]!): StagePlan! @deprecated + + """создание глобального плана""" + createGlobalStagePlan(title: String!, avatarUrl: String, subjectIds: [ID!]!, stageIds: [ID!]!, status: PlanStatusEnum!, stageFrames: [StagePlanFrameInput!]!): GlobalStagePlan! + + """ + savedFrames - новые или измененные фреймы, deletedFrames - фреймы на удаление + """ + changeGlobalStagePlan(itemId: ID!, title: String!, avatarUrl: String, subjectIds: [ID!]!, stageIds: [ID!]!, status: PlanStatusEnum!, active: Boolean!, savedFrames: [StagePlanFrameInput!]!, deletedFrames: [ID!]!): GlobalStagePlan! + + """ + Изменение статуса Плана на Ступень по ID (study_step_subject_plans.study_step_subject_plan_id) + """ + setStudyStepPlanStatus(planId: ID!, status: PlanStatusEnum!): StudyStepSubjectPlan! @deprecated + + """ + Публикация Плана на Ступень для текущей школы(!Идентификатор текущей школы не передается в schoolIds). + Копирование и публикация плана на ступень на ДОПОЛНИТЕЛЬНЫЕ школы, + если в schoolIds были переданы идентификаторы школ на которые ДОПОЛНИТЕЛЬНО нужно скопировать и опубликовать план на ступень + """ + publishStudyStepSubjectPlan(planId: ID!, schoolIds: [String!]): StudyStepSubjectPlan! + + """ + Публикует План на параллель по идентификатору Плана на параллель (stage_subject_plans.stage_subject_plan_id) + """ + publishStagePlan(stagePlanId: ID!): StagePlan! @deprecated + + """ + createUser(user: UserInput!) : User! + updateUser(user: UserInput!) : User! + """ + saveSystemNotification(systemNotification: SystemNotificationInput): SystemNotification! + + """""" + deleteSystemNotification(id: ID!): ID! + + """сохранение/изменение бизнес-пользователя (с ролями БА, СА)""" + saveUser(user: UserInput!): User! + + """выдача роли студента""" + grantStudentRole(userId: ID!, schoolId: ID!, stageGroupId: ID!): Boolean + + """выдача роли учителя""" + grantTeacherRole(userId: ID!, schoolId: ID!, subjectIds: [ID!]!): Boolean + + """выдача роли БА""" + grantBusinessAdminRole(userId: ID!, schoolId: ID!): Boolean + + """выдача роли родителя""" + grantParentRole(userId: ID!, schoolId: ID!, childrenIds: [UUID!]!): Boolean + + """""" + updateFunctionalRoleSet(functionalRoleSet: FunctionalRoleSetInput!): FunctionalRoleSet! + + """создание нового набора функциональных ролей""" + createFunctionalRoleSet(functionalRoleSetInput: FunctionalRoleSetInput!): FunctionalRoleSet + + """Устанавливаем второй фактор при аутентификации пользователя.""" + updateUserSecondFactorAuth(userId: ID!, smsAction: UserSecondFactorAuthSmsAction, totpAction: UserSecondFactorAuthTotpAction): Boolean! + + """сохранение/изменение предмета""" + saveSubjects(subjects: [SubjectInput!]!): [Subject!]! + + """Добавить пользователей в группы""" + addUsersToUserGroups(request: ManageUserGroupsInput!): [UserGroup!]! + + """Удалить пользователей из групп""" + removeUsersFromUserGroups(request: ManageUserGroupsInput!): [UserGroup!]! + + """Сохранение ссылки на общий для системы файл""" + saveCommonFile(commonFile: CommonFileInput!): Boolean! + + """Изменение дефолтной аватарки пользователя""" + saveDefaultUserAvatarUrl(avatarUrl: String!): Boolean! + + """""" + sendNotificationAfterSystemUpdate(versionEPS: String!): Boolean! + + """Создание/изменение секции баннеров""" + saveBannerSection(bannerSection: BannerSectionInput!): BannerSection! + + """Удаление секции баннеров""" + deleteBannerSection(bannerSectionId: ID!): BannerSection! + + """Создание/обнавление конфигурации""" + saveConfiguration(configuration: [ConfigurationInput!]!, deletedConfiguration: [ConfigurationDeleteInput!]): Boolean! + + """Создание глобального плана""" + createGlobalPlan(stageId: ID!): GlobalPlan! + + """Редактирование глобального плана""" + updateGlobalPlan(planGoalInputModels: [GlobalPlanGoalInput!]!, globalPlanId: ID!): GlobalPlan! + + """Публикация глобального плана""" + publishGlobalPlan(globalPlanId: ID!): GlobalPlan! + + """ + Сохранение настроек условий фильтрации для модуля (проекта, цели) в глобальном плане + """ + saveEvaluationRulesForGlobalPlan(globalPlanGoalId: ID!, conditionType: ConditionType!, evaluationRules: [EvaluationRuleGroupInput!]!): [EvaluationRuleGroup!]! + + """ + Сохранение настроек условий фильтрации для курса (группы проектов) в глобальном плане + """ + saveCourseEvaluationRulesForGlobalPlan(globalPlanCourseId: ID!, conditionType: ConditionType!, evaluationRules: [EvaluationRuleGroupInput!]!): [EvaluationRuleGroup!]! + + """ + Сохранение настроек условий фильтрации для модуля (проекта, цели) в глобальном курсе (группе проектов) + """ + saveEvaluationRulesForGlobalCourseGoal(globalCourseGoalId: ID!, conditionType: ConditionType!, evaluationRules: [EvaluationRuleGroupInput!]!): [EvaluationRuleGroup!]! + + """ + Сохранение настроек условий фильтрации для модуля (проекта, цели) в плане на параллель + """ + saveEvaluationRulesForStageSubjectPlan(stageSubjectPlanGoalId: ID!, conditionType: ConditionType!, evaluationRules: [EvaluationRuleGroupInput!]!): [EvaluationRuleGroup!]! + + """ + Сохранение настроек условий фильтрации для курса (группы проектов) в плане на параллель + """ + saveCourseEvaluationRulesForStageSubjectPlan(stageSubjectPlanCourseId: ID!, conditionType: ConditionType!, evaluationRules: [EvaluationRuleGroupInput!]!): [EvaluationRuleGroup!]! + + """Создание нового проекта в gitlab""" + createNewGitlabProject(projectName: String): GitlabProject! + + """Создание нового проекта в gitlab для данного пользователя""" + createNewGitlabProjectForUser(userId: ID!, projectName: String): GitlabProject! @deprecated(reason: "C фронта не создаем проекты для пользователей. Используется createPrivateGitlabProject. Под удаление") + + """Удалить проект из gitlab""" + deleteGitlabProject(projectId: ID!): GitlabResponseMessage + + """Пометить звездой данный проект в gitlab""" + starGitlabProject(projectId: ID!): GitlabProject! @deprecated(reason: "Не используется и никогда не использовалось. Делалось в первой версии интеграции с гитлабом. Под удаление") + + """ + Запустить экспортирования проекта в gitlab (формируется ссылка при успешном завершении) + """ + startGitlabProjectExport(projectId: ID!): GitlabResponseMessage @deprecated(reason: "Не используется и никогда не использовалось. Делалось в первой версии интеграции с гитлабом. Под удаление") + + """Cоздание файла по пути в репозитории gitlab""" + createGitlabFileAtPath(projectId: ID!, filePath: String, branchName: String, content: String, commitMessage: String): GitlabFileCreationStatus! + + """Обновление файла по пути в репозитории gitlab""" + updateGitlabFileAtPath(projectId: ID!, filePath: String, branchName: String, content: String, commitMessage: String): GitlabFileCreationStatus! + + """Удаление файла по пути в репозитории gitlab""" + deleteGitlabFileAtPath(projectId: ID!, filePath: String, branchName: String, commitMessage: String): GitlabResponseMessage + + """Создание тэга в репозитории gitlab""" + createGitlabRepositoryTag(projectId: ID!, tagName: String, branchName: String): GitlabRepositoryTag! + + """Импорт / Публикация гитлаб контента в файловой системе""" + publishGitlabContent(taskId: ID!, ref: String, dockerImageName: String): PublishContentResponse! + + """Запуск тестового пайплайна при публикации в гитлабе""" + runTrialAutotestsPipelineForTask(taskId: ID!): GitlabPipeline! @deprecated(reason: "Под удаление. Не используется нигде в проекте. Делалась для пробы интеграции с гитлаб пайплайнамми") + + """Обновление весов автотестов по заданию""" + updateAutotestWeights(autotests: [AutotestWithWeightInput!]!, taskId: ID!): [AutotestInfo!]! + + """Сохранение настроек последовательнсти и автопроверки""" + saveCheckSequenceSettings(checkSequenceSettings: CheckSequenceSettingsInput!): CheckSequenceSettings! + + """Сохранение параметров команды в модуле глобального плана""" + saveTeamSettingsInGlobalPlanGoal(globalPlanGoalId: ID!, teamSettings: TeamSettingsInput!): Boolean! + + """ + Cохранение настроек команды для модуля (проекта, цели) глобального курса + """ + saveTeamSettingsInGlobalCourseGoal(globalCourseGoalId: ID!, teamSettings: TeamSettingsInput!): Boolean! + + """Копирование модуля, возвращает скопированный модуль""" + copyModule( + """Идентификатор оригинала""" + moduleId: ID! + ): StudyModule! @deprecated(reason: "Под удаление. Использовать новую схему content.graphqls, метод copyModule") + + """Сохранение мета-информации по группе проектов (курсу)""" + saveCourseMeta(courseMeta: CourseMetaInput!): CourseMeta! + + """ + Заархивировать группу проектов (курс), вернет true если смена статуса произошла успешно + """ + archiveCourse(courseId: ID!, unarchive: Boolean): CourseMeta! + + """Редактирование глобального курса""" + saveGlobalCourse(courseGoalInputModels: [GlobalCourseGoalInput!]!, courseId: ID!, isAutoWeightsSetting: Boolean): GlobalCourse! + + """Публикация глобального курса""" + publishGlobalCourse(courseGoalInputModels: [GlobalCourseGoalInput!]!, courseId: ID!, isAutoWeightsSetting: Boolean): GlobalCourse! + + """Сохранение весов за проекты в курсе""" + saveCourseProjectsWeights(courseProjectsWeights: [CourseGoalWeightInput!]!, courseId: ID!): CourseGoalsWeights! + + """Сохранение настроек параллелей""" + saveStageConfigurations(stageConfigurations: [StageConfigurationInput!]!): [StageConfiguration!]! + + """ + Перепрогон автотестов по новому тегу для всех студентов. Поиск проходит по старому тегу + """ + rerunAutotestsWithNewTag(taskId: ID!, oldTag: String!, newTag: String!, startPeriod: DateTime!, endPeriod: DateTime!): ExcelWithAffectedStudentsModel! + + """""" + createBadgeAward(badgeInput: BadgeAwardInput!, schoolId: UUID): Award! + + """Копирование награды по идентификатору""" + copyBadgeAward(awardId: ID!): Award! + + """""" + editBadgeAward(awardId: ID!, badgeAwardInput: BadgeAwardInput!, schoolId: UUID): Award! + + """""" + archiveAward(awardId: ID!): Award! + + """""" + createAvatar(avatarInput: AvatarInput!): ID! + + """""" + editAvatar(avatarId: ID!, avatarInput: AvatarInput!): Boolean! + + """""" + editExperienceLevelRange(expLevelId: ID!, rangeInputModel: ExperienceLevelRangeInput): Boolean! +} + +"""""" +type SystemAdminQueries { + """""" + getSchools( + """ + фильтр активных школ: null - все, true - активные, false - деактивированные + """ + isActive: Boolean + + """Строка поиска""" + textSearch: String + + """Параметры сортировки""" + sortingFields: [SortingField] + + """Параметры пагинации""" + paging: PagingInput + ): [School!]! + + """""" + getSchoolsOfSchool21( + """ + фильтр активных школ: null - все, true - активные, false - деактивированные + """ + isActive: Boolean + + """false - только капмусы Школы 21, true - кампусы + продукт""" + includingProduct: Boolean + + """Строка поиска""" + textSearch: String + + """Параметры сортировки""" + sortingFields: [SortingField] + + """Параметры пагинации""" + paging: PagingInput + ): [School!]! + + """получение списка школ с входящими планами на ступень""" + getSchoolsWithStudyStepSubjects( + """ + фильтр активных школ: null - все, true - активные, false - деактивированные + """ + isActive: Boolean + + """Строка поиска""" + textSearch: String + + """Параметры сортировки""" + sortingFields: [SortingField] + + """Параметры пагинации""" + paging: PagingInput + ): [School!]! + + """ + получение списка школ с входящими планами на ступень с входящими предметами по параллелям + """ + getSchoolsWithStageSubjects: [School!]! + + """""" + getSafeSchoolsByIds( + """ИД школ""" + ids: [UUID!]! + ): [SafeSchool!]! + + """""" + getSchool(schoolId: ID!): School! + + """""" + getSchoolsCount( + """ + фильтр активных школ: null - все, true - активные, false - деактивированные + """ + isActive: Boolean + + """Строка поиска""" + textSearch: String + ): Int! + + """Возвращает все школы (безопасные, без доп.инфы)""" + getAllSafeSchool( + """ + фильтр активных школ: null - все, true - активные, false - деактивированные + """ + isActive: Boolean + + """тип организации: null - все""" + organizationType: OrganizationType + ): [SafeSchool!]! + + """возвращает всех тенантов (пока это тип School)""" + getTenants( + """ + фильтр активных школ: null - все, true - активные, false - деактивированные + """ + isActive: Boolean + + """Строка поиска""" + textSearch: String + + """Параметры сортировки""" + sortingFields: [SortingField] + + """Параметры пагинации""" + paging: PagingInput + ): [School!]! + + """возвращает список тенантов""" + getTenantsOfProductAndGlobalLevels: [School]! @deprecated(reason: "Использовать запрос getTenants:[School]!. Под удаление.") + + """возвращает список тенантов""" + getTenantsList: [School]! + + """ + получение тенанта пользователя с функциональной ролью "СА тенанта", "userId" которого передан в параметре метода + """ + getTenantOfUserWithSaTenantFunctionalRoleByUserId(userId: ID!): School + + """ + получение тенанта, id которого передан в хэдере запроса "tenantId", для отображения его полей на UI + """ + getTenant: School + + """возвращает всех тенанты уровня типа продукт""" + getProductLevelTenants: [School!]! + + """""" + getSchoolsCountWithStudyStepSubjects( + """ + фильтр активных школ: null - все, true - активные, false - деактивированные + """ + isActive: Boolean + + """Строка поиска""" + textSearch: String + ): Int! + + """получение файлов (общих для системы)""" + getCommonFiles: [CommonFile!]! + + """""" + getStages(isSchool21: Boolean): [Stage!]! + + """""" + getStageConfigurations(isSchool21: Boolean): [StageConfiguration!]! + + """""" + getStageById(stageId: ID!): Stage! + + """""" + getStagePlansByIds(ids: [ID!]!): [StagePlan!]! + + """""" + getSubjects(organizationHierarchyTypes: [OrganizationHierarchyType]!): [Subject!] + + """""" + getSubjectsByIds(ids: [ID!]!): [Subject!]! + + """ + Получение списка системных уведомлений для текущей школы, включая плашку + """ + getSystemNotificationsWithCommon( + """Параметры сортировки""" + sortingFields: [SortingField] + + """Строка поиска""" + textSearch: String + + """Параметры пагинации""" + paging: PagingInput + ): [SystemNotification!]! + + """Получение списка системных уведомлений для текущей школы без плашки""" + getSystemNotificationsWithoutCommon( + """Параметры сортировки""" + sortingFields: [SortingField] + + """Строка поиска""" + textSearch: String + + """Параметры пагинации""" + paging: PagingInput + ): [SystemNotification!]! + + """Получение списка системных уведомлений глобальных (плашка)""" + getSystemNotificationsCommon( + """Параметры сортировки""" + sortingFields: [SortingField] + + """Строка поиска""" + textSearch: String + + """Параметры пагинации""" + paging: PagingInput + ): [SystemNotification!]! + + """ + Получение количества системных уведомлений для текущей школы, включая плашку + """ + getSystemNotificationsCountWithCommon( + """Строка поиска""" + textSearch: String + ): Int! + + """ + Получение количество системных уведомлений для текущей школы без плашки + """ + getSystemNotificationsCountWithoutCommon( + """Строка поиска""" + textSearch: String + ): Int! + + """Получение системного уведомления""" + getSystemNotification(id: ID!): SystemNotification! + + """ + Получение списка системных уведомлений для текущей школы на период, включая системные + """ + getSystemNotificationsForPeriodWithCommon( + """Дата начала периода""" + startDate: String! + + """Дата окончания периода""" + endDate: String! + ): [SystemNotification!]! + + """ + Получение списка системных уведомлений для текущей школы на период без системных + """ + getSystemNotificationsForPeriodWithoutCommon( + """Дата начала периода""" + startDate: String! + + """Дата окончания периода""" + endDate: String! + ): [SystemNotification!]! + + """ + Получение рекомендуемого кол-ва дней на учебный модуь в соотношении (Идентификатор цели, кол-во дне на учебный модуь) + """ + getRecommendedDurationForModules(goalIds: [ID!]!, stageSubjectId: ID!): [GoalDurationMap!]! + + """ + Получить список пользователей-сотрудников с полномочиями администраторов + """ + getStaff(textSearch: String, froleSetIds: [UUID], entityIds: [UUID], filterIsAdmin: Boolean, filterBlockedAdmin: Boolean, filterNoFroleSet: Boolean, creationDateTimeStart: DateTime, creationDateTimeEnd: DateTime, sortingFields: [SortingField], paging: PagingInput): [User]! + + """Количество записей для запроса getStaff""" + getStaffCount(textSearch: String, froleSetIds: [UUID], entityIds: [UUID], filterIsAdmin: Boolean, filterBlockedAdmin: Boolean, filterNoFroleSet: Boolean, creationDateTimeStart: DateTime, creationDateTimeEnd: DateTime): Int! + + """ + получить список пользователей с ролями, статусами и ролеспецифичными данными. + Фильтры: роли - только СА, БА + """ + getUsers( + """""" + sortingFields: [SortingField] + + """""" + filterUserStatus: UserStatus + + """""" + filterRoleStatus: RoleStatus + + """""" + filterRoles: [String] + + """""" + filterSchools: [ID] + + """""" + filterStageGroups: [ID] + + """""" + filterSubjects: [ID] + + """""" + filterConfiguredUsers: Boolean + + """""" + graduationDateTimeStart: DateTime + + """""" + graduationDateTimeEnd: DateTime + + """""" + creationDateTimeStart: DateTime + + """""" + creationDateTimeEnd: DateTime + + """""" + dismissTypeId: Int + + """""" + dismissDateStart: DateTime + + """""" + dismissDateEnd: DateTime + + """""" + birthdayStart: Date + + """""" + birthdayEnd: Date + + """""" + textSearch: String + + """""" + paging: PagingInput + + """""" + froleSetIds: [UUID!] + + """ + Идентификаторы объектов (продукт/кампус), которые определяют уровень иерархии пользователей при фильтрации + """ + entityIds: [String!] + ): [User]! + + """количество записей для getUsers""" + getUsersCount( + """""" + filterUserStatus: UserStatus + + """""" + filterRoleStatus: RoleStatus + + """""" + filterRoles: [String] + + """""" + filterSchools: [ID] + + """""" + filterStageGroups: [ID] + + """""" + filterSubjects: [ID] + + """""" + filterConfiguredUsers: Boolean + + """""" + graduationDateTimeStart: DateTime + + """""" + graduationDateTimeEnd: DateTime + + """""" + creationDateTimeStart: DateTime + + """""" + creationDateTimeEnd: DateTime + + """""" + dismissTypeId: Int + + """""" + dismissDateStart: DateTime + + """""" + dismissDateEnd: DateTime + + """""" + birthdayStart: Date + + """""" + birthdayEnd: Date + + """""" + textSearch: String + + """""" + froleSetIds: [UUID!] + + """ + Идентификаторы объектов (продукт/кампус), которые определяют уровень иерархии пользователей при фильтрации + """ + entityIds: [String!] + ): Int! + + """Получить список пользователей с фильтрацией по профилям доступа""" + getUsersV2(filterNonConfiguredUsers: Boolean, filterSchools: [UUID], filterFroleSets: [UUID], textSearch: String, sortingFields: [SortingField], paging: PagingInput): [User]! + + """количество записей для getUsersV2""" + getUsersV2Count(filterNonConfiguredUsers: Boolean, filterSchools: [UUID], filterFroleSets: [UUID], textSearch: String): Int! + + """Получить список пользователей-студентов""" + getStudents(filterSchools: [ID], filterStages: [ID], filterStageGroups: [ID], creationDateTimeStart: DateTime, creationDateTimeEnd: DateTime, filterNoFroleSet: Boolean, filterFreezingStudents: Boolean, filterExpellingStudents: Boolean, filterInactiveStudents: Boolean, filterBlockedStudents: Boolean, restrictDateStart: DateTime, restrictDateEnd: DateTime, textSearch: String, sortingFields: [SortingField], paging: PagingInput): [User]! + + """Количество записей для запроса getStudents""" + getStudentsCount(filterSchools: [ID], filterStages: [ID], filterStageGroups: [ID], creationDateTimeStart: DateTime, creationDateTimeEnd: DateTime, filterNoFroleSet: Boolean, filterFreezingStudents: Boolean, filterExpellingStudents: Boolean, filterInactiveStudents: Boolean, filterBlockedStudents: Boolean, restrictDateStart: DateTime, restrictDateEnd: DateTime, textSearch: String): Int! + + """ + получить пользователя с ролями (только СА, БА), статусами и ролеспецифичными данными. + """ + getUser(userId: ID!): User! + + """получить информацию об настроенных типах аутентификации пользователя""" + getUserCredentialsInfo(userId: ID!): UserCredentialsInfo! + + """список доступных пермишенов""" + getAvailablePermissions: [String!]! + + """список функциоальных ролей по ролям и школам""" + getFunctionalRoles(request: [SchoolFunctionalRoleInput!]!): [FunctionalRole!]! + + """список доступных профилей доступа""" + getFunctionalRoleSets(filterFunctionalRoleSetNames: [String!], filterFunctionalRoleNames: [String!], textSearch: String, paging: PagingInput, sortingFields: [SortingField!]): [FunctionalRoleSet!]! + + """Количество доступных профилей доступа""" + getFunctionalRoleSetsCount(filterFunctionalRoleSetNames: [String!], filterFunctionalRoleNames: [String!], textSearch: String): Int! + + """Профиль доступа""" + getFunctionalRoleSet(functionalRoleSetId: UUID!): FunctionalRoleSet! + + """список функциоальных ролей по оргструктуре""" + getFunctionalRolesByOrgUnitIds(orgUnitIds: [ID!]!): [FunctionalRole!]! @deprecated(reason: "Использовать getFunctionalRolesByFilter") + + """Возвращает список функциональных ролей по фильтру""" + getFunctionalRolesByFilter(orgUnitIds: [ID!]!, textSearch: String, paging: PagingInput): [FunctionalRole!]! + + """Количество доступных функциональных ролей по фильтру""" + getFunctionalRolesByFilterCount(orgUnitIds: [ID!]!, textSearch: String): Int! + + """Возвращает школу с Планами на ступень по идентфиикатору Школы""" + getStudyStepPlansBySchoolId(schoolId: UUID!): School! + + """Возвращает список регионов России""" + getAllRegions: [Region!]! @deprecated(reason: "Запрос для получения всех регионов в UserQueries") + + """Возвращает список регионов""" + getAllRegionsV2: [Region!]! + + """Возвращает все секции баннеров""" + getAllBannerSections(schoolId: ID, stageId: ID): [BannerSection!]! + + """Возвращает секцию баннеров по ID""" + getBannerSectionById(bannerSectionId: ID!): BannerSection! + + """Возвращает справочную информацию по секциям баннеров""" + getBannerSectionInfo(bannerSectionCode: String): [BannerSectionInfo!]! + + """Получение всех запрошенных конфигураций.""" + getConfigurations(frontConfigurationInput: [FrontConfigurationInput!]!, entityIdList: [ID!]!, userId: ID): [Configuration!]! @deprecated(reason: "Have to be removed after ui for parameters with tariff. Remove after a new API version is rolled out that takes into account the Product configurations") + + """Получение всех запрошенных конфигураций.""" + getConfigurationsV2(frontConfigurationInput: [FrontConfigurationInput!]!, entityId: String!, userId: ID): [Configuration!]! + + """Получение всех запрошенных конфигураций сгруппированые по тарифам""" + getConfigurationsByTariff(frontConfigurationInput: [FrontConfigurationInput!]!, entityIdList: [ID!]!, userId: ID): [ConfigurationByTariff!]! @deprecated(reason: "Remove after a new API version is rolled out that takes into account the Product configurations") + + """Получение всех запрошенных конфигураций сгруппированые по тарифам""" + getConfigurationsByTariffV2(frontConfigurationInput: [FrontConfigurationInput!]!, entityId: String!, userId: ID): [ConfigurationByTariff!]! + + """Получение всех запрошенных конфигураций c учетом тарифов""" + getConfigurationsTariffCompatible(frontConfigurationInput: [FrontConfigurationInput!]!, entityIdList: [ID!]!, userId: ID): [Configuration!]! @deprecated(reason: "Remove after a new API version is rolled out that takes into account the Product configurations") + + """Получение всех запрошенных конфигураций c учетом тарифов""" + getConfigurationsTariffCompatibleV2(frontConfigurationInput: [FrontConfigurationInput!]!, entityId: String!, userId: ID): [Configuration!]! + + """ + Получение списка конфигураций c бэкенда по фильтрам для вкладки "Параметры" -> "Региональные" + """ + getBackendConfigurationsByFiltersOnRegionalTab(configurationFilterInput: ConfigurationFilterInput): [ConfigurationEntity!]! @deprecated(reason: "Remove after a new API version is rolled out that takes into account the Product configurations") + + """ + Получение списка конфигураций c бэкенда по фильтрам для вкладки "Параметры" -> "Региональные" + """ + getBackendConfigurationsByFiltersOnRegionalTabV2(configurationFilterInput: ConfigurationFilterInput): [ConfigurationEntity!]! + + """ + Получение всех конфигураций с бэкенда для вкладки "Параметры" -> "Дефолтные" + """ + getAllBackendConfigurationsOnDefaultTab(entityIdList: [ID!]!, userId: ID): [ConfigurationEntity!]! @deprecated(reason: "Remove after a new API version is rolled out that takes into account the Product configurations") + + """ + Получение всех конфигураций с бэкенда для вкладки "Параметры" -> "Дефолтные" + """ + getAllBackendConfigurationsOnDefaultTabV2(entityId: String!, userId: ID): [ConfigurationEntity!]! + + """Получение всех конфигураций с бэкенда""" + getAllBackendConfigurations(entityIdList: [ID!]!, userId: ID): [Configuration!]! @deprecated(reason: "Have to be removed after ui for parameters with tariff. Remove after a new API version is rolled out that takes into account the Product configurations") + + """Получение всех конфигураций с бэкенда""" + getAllBackendConfigurationsV2(entityId: String!, userId: ID): [Configuration!]! + + """Получение всех конфигураций для бэкенда сгрупированные по тарифам""" + getAllBackendConfigurationsByTariff(entityIdList: [ID!]!, userId: ID): [ConfigurationByTariff!]! @deprecated(reason: "Remove after a new API version is rolled out that takes into account the Product configurations") + + """Получение всех конфигураций для бэкенда сгрупированные по тарифам""" + getAllBackendConfigurationsByTariffV2(entityId: String!, userId: ID): [ConfigurationByTariff!]! + + """Получение всех конфигураций для бэкенда с учетом тарифов""" + getAllBackendConfigurationsTariffCompatible(entityIdList: [ID!]!, userId: ID): [Configuration!]! @deprecated(reason: "Remove after a new API version is rolled out that takes into account the Product configurations") + + """Получение всех конфигураций для бэкенда с учетом тарифов""" + getAllBackendConfigurationsTariffCompatibleV2(entityId: String!, userId: ID): [Configuration!]! + + """Возвращает глобальный план по идентификатору""" + getGlobalStagePlan(itemId: ID!): GlobalStagePlan! + + """Возвращает глобальный план по идентификатору""" + getGlobalPlan(globalPlanId: ID!): GlobalPlan! + + """ + Возвращает все существующие глобальные планы Ш21, если includeExternalLearningPlans = false или NULL + Если includeExternalLearningPlans = true, то возвращает планы Конкурсов и Обучения учителей + """ + getGlobalPlans(includeExternalLearningPlans: Boolean): [GlobalPlan!]! + + """Получение курсов с учетом фильтров""" + getCourses( + """Список курсов которые надо исключить из выдачи""" + filterExceptCourses: [ID] + + """Строка поиска (по имени)""" + name: String + + """Список тегов""" + tags: [String!] + + """Тип курса""" + courseType: CourseType + + """Список полей сортировки""" + sortingFields: [SortingField] + + """Параметры пагинации""" + paging: PagingInput + ): CourseSearchResult! + + """Запрос списка всех доступных условий заданного типа""" + loadEvaluationRuleFieldOptions(conditionType: ConditionType!, planTypeForCondition: PlanTypeForCondition, planGoalId: ID, courseGoalId: ID): [EvaluationRuleFieldOption!]! + + """Получение списка правил для конструктора курсов""" + loadEvaluationCourseRuleFieldOptions(planTypeForCondition: PlanTypeForCondition, planGoalId: ID): [EvaluationRuleFieldOption!]! + + """ + Запрос настроек условий заданного типа для модуля (проекта, цели) в глобальном плане + """ + loadTaskEvaluationRulesFromGlobalPlan(globalPlanGoalId: ID!, conditionType: ConditionType!): [EvaluationRuleGroup!]! + + """ + Запрос настроек условий заданного типа для курса (группы проектов) в глобальном плане + """ + loadCourseEvaluationRulesFromGlobalPlan(globalPlanCourseId: ID!, conditionType: ConditionType!): [EvaluationRuleGroup!]! + + """ + Запрос настроек условий заданного типа для модуля (проекта, цели) в глобальном курсе (группе проектов) + """ + loadTaskEvaluationRulesFromGlobalCourse(globalCourseGoalId: ID!, conditionType: ConditionType!): [EvaluationRuleGroup!]! + + """Запрос настроек условий заданного типа для плана на параллель""" + loadTaskEvaluationRulesFromStageSubjectPlan(stageSubjectPlanGoalId: ID!, conditionType: ConditionType!): [EvaluationRuleGroup!]! @deprecated(reason: "Использовать запрос loadTaskEvaluationRuleGroupsFromStageSubjectPlan. Под удаление.") + + """ + Запрос настроек условий заданного типа для модуля (проекта, цели) в плане на параллель + """ + loadTaskEvaluationRuleGroupsFromStageSubjectPlan(stageSubjectPlanGoalId: ID!, conditionType: ConditionType!): EvaluationRuleGroupsWithEquivalentFlag! + + """ + Запрос настроек условий заданного типа для курса (группы проектов) в плане на параллель + """ + loadCourseEvaluationRuleGroupsFromStageSubjectPlan(stageSubjectPlanCourseId: ID!, conditionType: ConditionType!): EvaluationRuleGroupsWithEquivalentFlag! + + """ + Поиск тегов. В поле тег записывается тег или его часть по которому делается поиск. По умолчанию пустая строка + """ + searchTags(tag: String!, limit: Int!, offset: Int!): [String!]! + + """""" + loadDictsForChecklist: TaskContentAggregationResponse! + + """Получение списка проектов из gitlab""" + getGitlabProjects: [GitlabProject!]! @deprecated(reason: "Слишком тяжеловесная кваря - не используется. Под удаление.") + + """Получить всех пользователей данного gitlab проекта""" + getAllGitlabProjectUsers(projectId: ID!): [GitlabUser!]! + + """Получить все форки данного gitlab проекта""" + getGitlabProjectForks(projectId: ID!): [GitlabProject!]! + + """Получение всех темплейтов файлов по типу""" + getGitlabFileTemplates(projectId: ID!, templateType: TemplateType!): [GitlabFileTemplate!]! + + """ + Получить экспорт проекта из gitlab (с сформированными ссылками на download) + """ + getGitlabProjectExport(projectId: ID!): GitlabProject @deprecated(reason: "Не используется и никогда не использовалась. Делалась в первой версии интеграции с гитлабом. Под удаление") + + """Получение файла из репозитория gitlab""" + getGitlabFileFromRepository(projectId: ID!, filePath: String, branchName: String): GitlabFile + + """Получение весов автотестов по заданию""" + getAutotestWeights(taskId: ID!): [AutotestInfo!]! + + """Получение всех тэгов из репозитория gitlab""" + getGitlabRepositoryTags(taskId: ID!): [GitlabRepositoryTag!]! + + """Получение текущих настроек""" + getCheckSequenceSettings(taskId: ID!): CheckSequenceSettings! + + """ + Получение списка предметов в соответствии с признаком видимости (берется из конфигурации: глобальный, локальный для данного ОУ, все предметы) + """ + getSubjectsByOrgUnitId(orgUnitId: ID!): [Subject!]! + + """Запрос настроек команды для модуля из глобального плана""" + getTeamSettingsFromGlobalPlanGoal(globalPlanGoalId: ID!): TeamSettings + + """ + Запрос настроек команды для модуля (проекта, цели) в глобальном курсе (группе проектов) + """ + getTeamSettingsFromGlobalCourseGoal(globalCourseGoalId: ID!): TeamSettings + + """Получение всех docker образов с автотестами в gitlab""" + getGitlabDockerImagesForAutoQA: [GitlabDockerImage!]! + + """Получение ссылки на мастер проект в гитлабе""" + getGitlabMasterProjectLink(taskId: ID!): GitlabLink! + + """Получение ссылки на студенческий проект в гитлабе""" + getGitlabStudentProjectLink(taskId: ID!): GitlabLink! + + """Получение активной версии контента проекта в гитлабе""" + getGitlabActiveProjectVersion(taskId: ID!): String! + + """Получение флага опубликованности контента по данному заданию""" + getTaskContentImportFlag(taskId: ID!): Boolean! + + """Информация о студентах на плане кластера""" + getClusterPlanStudents: ClusterPlanStudents! @deprecated(reason: "do not use. Will be deleted in 29.0") + + """ + Получение build info основного приложения и дополнительных микросервисов + """ + getApplicationBuildInfos: [ApplicationInfo!]! @deprecated + + """Возвращает глобальный курс по идентификатору""" + getGlobalCourse(globalCourseId: ID!): GlobalCourse! + + """Получение сохраненных весов и XP за проекты в курсе""" + getCourseProjectsWeights(courseId: ID!): CourseGoalsWeights! + + """Получение мета-информации о группе проектов (курсе)""" + getCourseMeta(courseId: ID!): CourseMeta! + + """Получение атрибутов консистентности группы проектов (курса)""" + getCourseConsistencyInfo(courseId: ID!): CourseMeta! + + """ + Получение base64 excel со списком студентов, на которых повлияет перепубликация контента из гита + """ + getListOfAffectedStudentsByReImport(taskId: ID!): ExcelWithAffectedStudentsModel! + + """ + Получение данных о количестве P2P проверок и средней оценке пользователя как ревьюера + """ + getFeedbackStatisticsAverageScore(studentId: UUID!): FeedbackStatisticsAverageScore! + + """Получение истории изменения опыта""" + getExperienceHistoryDate(userId: UUID!, schoolId: ID): UserExperienceHistoryDate! + + """ + S21. Публичный профиль студента. Получение всех волн (аналог stage_group_name) и форм обучения (аналог stage_name) по StudentId + """ + getStageGroupsS21PublicProfile(studentId: UUID!): [StageGroupS21] @deprecated(reason: "use school21 query") + + """Получение всех проектов по userId и stageGroupId""" + getStudentProjectsByStageGroup(studentId: UUID!, stageGroupId: ID!): [StudentItem]! + + """Проверка наличия привязанных заданий к модулям""" + checkGoalsContainTasks(goalIds: [ID]!): Boolean! + + """ + Возвращает здания c кабинетами по идентификатору школы, необходимо для определения предпочитаемых кабинетов учителя + """ + getBuildingsBySchoolId(schoolId: ID!): [Building!]! + + """ + Проверка было ли задание прогнано на автотесты для студентов В прошедшие 6 месяцев + """ + isTaskAutotestedInLastSixMonths(taskId: ID!): Boolean! + + """ + Получение всех тегов за временной промежуток, по которым были запущены пайпалайны по автотестам у студентов по заданию + """ + getAutotestTagsByTaskIdInThePeriod(taskId: ID!, startPeriod: DateTime!, endPeriod: DateTime!): [String!]! + + """""" + getBadges: [Badge!]! + + """""" + getAvatars: [Avatar!]! + + """Доступные награды для выдачи""" + getAwards(schoolId: ID, badgeKindTypeId: Int, assignmentTypeId: Int, awardName: String, sortingFields: [SortingField], page: PagingInput): [Award!]! + + """Получение награды по идентификатору""" + getAwardById(awardId: ID!): Award! + + """количество доступных наград для выдачи""" + getAwardsCount(schoolId: ID, badgeKindTypeId: Int, assignmentTypeId: Int, awardName: String): Int! + + """Запрос истории получения ачивки""" + getUserAwardHistoryByAwardId(awardId: ID!, login: String, paging: PagingInput!): [UserAwardHistory!]! + + """ + Запрос истории получения ачивки c возможностью сортировать по awardDate + """ + getUserAwardHistoryByAwardIdV2(awardId: ID!, login: String, paging: PagingInput!, sortingFields: [SortingField!]!): [UserAwardHistory!]! + + """""" + getUserAwardHistoryByAwardIdCount(awardId: ID!, login: String): Int! + + """Список мягких навыков""" + getSoftSkillTypes(isArchive: Boolean, sortingFields: [SortingField!]): [SoftSkillType!]! +} + +"""""" +type SystemAdminRole { + """""" + id: ID! + + """""" + productId: ID + + """""" + orgUnitId: ID + + """""" + status: RoleStatus! + + """дата активации роли""" + dateStart: DateTime + + """дата деактивации роли""" + dateEnd: DateTime + + """является ли роль дефолтной при входе пользователя в приложение""" + isDefault: Boolean! + + """название роли""" + role: ROLES! + + """тенант""" + tenantId: ID @deprecated(reason: "Сисадмин всегда привязан к корневому узлу иерархии") +} + +"""""" +input SystemAdminRoleInput { + """""" + id: ID + + """""" + status: RoleStatus + + """""" + temporaryRoleInput: TemporaryRoleInput + + """""" + tenantId: ID +} + +"""""" +type SystemError { + """ID ошибки""" + id: ID! + + """дата создания""" + createTs: Date! + + """версия системы""" + systemVersion: String! + + """тип исключения""" + systemErrorType: SystemErrorType! + + """Уникальный бизнесовый тип ошибки""" + exceptionType: String! + + """уникальный идентификатор исключения""" + exceptionUniqueCode: UUID + + """сообщение об исключении""" + exceptionMessage: String! + + """stackTrace""" + exceptionStacktrace: String + + """id школы""" + schoolId: UUID + + """Пользователь, у которого произошла ошибка""" + user: User + + """логин пользователя""" + login: String + + """метод в котором произошла ошибка""" + method: String! + + """url страницы, на которой произошла ошибка""" + targetPageUrl: String! + + """ссылка на архив с информацией""" + archiveUrl: String + + """браузер""" + browser: String! + + """Статус ошибки""" + status: ComplaintAndSystemErrorStatus! + + """комментарий исполнителя""" + executorComment: String + + """версия приложения""" + routeInfo: String +} + +"""""" +input SystemErrorInput { + """версия системы""" + systemVersion: String! + + """тип исключения""" + systemErrorType: SystemErrorType! + + """Уникальный бизнесовый тип ошибки""" + exceptionType: String! + + """уникальный идентификатор исключения""" + exceptionUniqueCode: String! + + """сообщение об исключении""" + exceptionMessage: String! + + """stackTrace""" + exceptionStacktrace: String + + """id школы""" + schoolId: UUID + + """id пользователя""" + userId: UUID! + + """логин пользователя""" + login: String! + + """метод в котором произошла ошибка""" + method: String! + + """браузер""" + browser: String! + + """ссылка на страницу на которой произошла ошибка""" + targetPageUrl: String! + + """ссылка на архив с информацией""" + archiveUrl: String! + + """версия приложения""" + routeInfo: String +} + +"""Источники системных ошибок""" +enum SystemErrorType { + """""" + BACK + + """""" + FRONT +} + +"""""" +type SystemNotification { + """ID записи""" + id: ID! + + """ID школы, если не задано, то показываем всем""" + schoolId: ID + + """Заголовок сообщения""" + notificationHeader: String! + + """Текст сообщения""" + notificationText: String! + + """Дата-время начала отображения сообщения""" + notificationDisplayStart: Date! + + """Дата-время окончания отображения сообщения""" + notificationDisplayEnd: Date! + + """ + Автор. Необязательное, так как при запросе БА данное поле удаляется из ответа + """ + author: User + + """Возможность закрыть""" + closable: Boolean! +} + +"""""" +input SystemNotificationInput { + """ID записи, если не задано, то создаем новую""" + id: ID + + """ID школы, если не задано, то показываем всем""" + schoolId: ID + + """Заголовок сообщения""" + notificationHeader: String! + + """Текст сообщения""" + notificationText: String! + + """Дата-время начала отображения сообщения""" + notificationDisplayStart: String! + + """Дата-время окончания отображения сообщения""" + notificationDisplayEnd: String! + + """Возможность закрыть""" + closable: Boolean + + """Флаг создания глобальных уведомлений""" + notify: Boolean +} + +"""""" +type TagHierarchyElement { + """""" + tagId: ID! + + """""" + name: String! + + """""" + tagType: MediatekaTagType! + + """""" + children: [TagHierarchyElement!] +} + +"""Теггируемая сущность""" +enum TaggedEntityTypeEnum { + """Группа проектов (курс)""" + COURSE + + """Модуль""" + MODULE + + """Задание""" + TASK +} + +"""""" +enum TaggedObjectsEnum { + """задание""" + TASK + + """учебный модуль""" + STUDY_MODULE +} + +"""""" +type Tariffs { + """идентификатор тарифа""" + id: UUID! + + """название тарифа""" + name: String! + + """время создания тарифа""" + createTs: DateTime! +} + +"""""" +type TariffsConfigurationsOfSchool { + """тариф""" + tariff: Tariffs! + + """набор конфигурации данного тарифа""" + propertyCodes: [String]! +} + +"""""" +input TariffsConfigurationsOfSchoolInput { + """идентификатор тарифа""" + tariffId: UUID! + + """ + набор конфигурации данного тарифа или нул значение в наборе если нужно привязать/удалить все фф из тарифа + """ + propertyCodes: [String]! +} + +"""""" +input TariffsInput { + """идентификатор тарифа""" + id: UUID + + """название тарифа""" + name: String! +} + +"""""" +type TariffsMutations { + """Сохранение/обновление тарифа""" + saveTariff(tariffs: TariffsInput!): UUID! + + """ + Изменяет(добавляем обновляет или удаляет) набор конфигурации указанного тарифа + """ + changeConfigurationsToTariffsBinding( + """тариф у которого надо поменять конфигурации""" + tariffId: UUID! + + """название_конфигурации-дефолтное значение для добавление/обновления""" + configurationForAdd: [ConfigurationsOfTariffInput]! + + """название_конфигурации-дефолтное значение для удаления""" + configurationForRemove: [ConfigurationsOfTariffInput]! + ): Boolean! + + """Изменяет(добавляем обновляет или удаляет) конфигурации тарифов у школы""" + changeTariffsConfigurationToSchoolBinding( + """школа для которой будут меняться конфигурации тарифы""" + schoolId: UUID! + + """набор конфигураций для добавления/обновления сгрупированные по тарифам""" + tariffsConfigurationsOfSchoolForAdd: [TariffsConfigurationsOfSchoolInput]! + + """набор конфигураций для удаление сгрупированные по тарифам""" + tariffsConfigurationsOfSchoolForRemove: [TariffsConfigurationsOfSchoolInput]! + ): Boolean! +} + +"""""" +type TariffsQueries { + """Получить все тарифы""" + loadAllTariffs: [Tariffs]! + + """Получить список конфигураций тарифа по умолчанию""" + loadConfigurationsByTariffId(tariffId: UUID!): [ConfigurationsOfTariff]! + + """ + Получить набор конфигураций и тарифов привязанных к школе(если школа относится к полному тарифу, то его фф раскрываются ) + """ + loadTariffsConfigurationsBySchoolId(schoolId: UUID!): [TariffsConfigurationsOfSchool]! + + """получить тариф соотвествующий школе""" + getTariffBySchoolId(schoolId: UUID!): Tariffs +} + +"""""" +type Task { + """UUID задания""" + taskUUID: UUID! + + """Версия задания""" + version: String + + """ID задания""" + id: ID! + + """Дубль идентификатора, решает проблемы, связанные с Apollo cache""" + taskId: ID! + + """Наименование""" + title: String! + + """Тип""" + type: TaskTypeEnum! + + """Тип проверки задания (Онлайн/Оффлайн)""" + checkType: TaskCheckEnum! @deprecated(reason: "Will be deleted. Use instead checkTypes") + + """Типы проверки задания (Онлайн/Оффлайн)""" + checkTypes: [TaskCheckEnum!]! + + """Код внешней системы для проверки""" + externalSystemCode: String + + """Признак синхронности/асинхронности внешней системы для проверки""" + externalSystemSync: Boolean + + """Формат выполнения (Групповой/Индивидуальный)""" + assignmentType: TaskAssignmentEnum! + + """Настройки команды в групповом задании в школе 21""" + teamSettingTask: TeamSettingTask + + """Код""" + code: String! @deprecated + + """Трудоемкость (в минутах)""" + laboriousness: Int! + + """Трудоемкость фактическая (в секундах)""" + actualLaboriousness: Float + + """ + Владелец интеллектуальной собственности (например, автор учебника, из которого задание перенесено на Платформу) + Кастомная запись, которую можно отредактировать на UI. + НИ НА ЧТО НЕ ВЛИЯЕТ + """ + author: String! + + """Создатель задания. (ТОТ КТО ПЕРВЫМ НАЖАЛ НА КНОПКУ!!!!!!!!!!!!!!!)""" + createUser: User! + + """ + Соавторы. В потенциале в этом массиве будут лежать цензоры, редакторы и прочие участники процесса производства контента + """ + coAuthors: [User!]! + + """Пользователь который произвел последнее изменение""" + modifyUser: User + + """Лицензия""" + license: License! @deprecated + + """Источники""" + links: String! + + """Полезная информация ученику""" + info: String! + + """Подсказка для учителя""" + teacherHint: String! + + """Подсказка для ученика""" + studentHint: String! + + """Описание""" + description: String! + + """id предмета""" + subjectId: Int + + """Название предмета""" + subjectName: String! + + """Контент""" + content: TaskContent + + """Тип контента задания""" + taskContentType: TaskContentTypeEnum + + """Название модуля""" + goalName: String! + + """ID модуля""" + goalId: ID + + """Уровень""" + level: Float + + """Типы гибких навыков""" + softSkillTypes: [TaskSoftSkillType!]! + + """Навыки""" + skills: [String!]! @deprecated(reason: "Will be deleted in 0.14.0. Use instead task.linkedGoalElementInfos") + + """Дата создания""" + createTime: DateTime! + + """Дата последнего изменения""" + modifyTime: DateTime + + """Параллель""" + stage: Stage + + """""" + goalLevels: [String] + + """шкала оценивания""" + gradingScales: [GradingScale!]! + + """% правильных ответов для приемки задания при автопроверке""" + acceptancePercent: Int + + """Идентификатор родительского Задания""" + parentTaskId: ID + + """Файл педтехники""" + pedagogicalTechnique: PedagogicalTechnique @deprecated + + """Наличие доступа у текущего пользователя""" + hasAccess: Boolean @deprecated(reason: "Will be deleted in 0.13.0") + + """Количество попыток""" + attemptsNumber: Int + + """Неограниченное количество попыток""" + unlimitedAttempts: Boolean! + + """Файлы, прикрепленные к Заданию""" + attachmentFiles: [TaskFile!]! + + """ + Файлы, прикрепленные к полю Задания "Правильный ответ и критерии оценивания" + """ + infoAttachmentFiles: [TaskInfoFile!]! + + """короткая ссылка на задание (относительный путь)""" + shortcut: String! + + """Заметка задания""" + note: String @deprecated + + """Название элемента цели""" + goalElementName: [String!]! @deprecated(reason: "Will be deleted in 0.14.0. Use task.linkedGoalElementInfos") + + """Список тегов""" + tags: [String!]! @deprecated(reason: "Will be deleted. Use task.contentTags") + + """Признак архивности""" + archived: Boolean! + + """Признак является ли задание офлайновым""" + isOffline: Boolean @deprecated + + """Признак принаджелит ли задание к геймифицированному модулю""" + belongsToCustomModule: Boolean! @deprecated(reason: "Will be deleted in 26.0.") + + """скоуп видимости""" + scope: ScopeEnum! + + """доступно ли Задание на чтение текущему пользователю""" + hasReadAccess: Boolean! + + """Использовать taskConfig""" + showAnswerInput: Boolean! + + """конфигурация задания""" + taskConfig: TaskConfig + + """информация о Элемента Цели, к которым привязано Задание""" + linkedGoalElementInfos: [LinkedGoalElementInfo!]! + + """список критериев, по которым можно ценить Задание""" + taskCriteria: [TaskCriterion!]! + + """Параметры задания""" + studentTaskAdditionalAttributes: StudentTaskAdditionalAttributes! + + """Активная версия контента проекта в гитлабе""" + gitlabActiveProjectVersion: String + + """Уровень сложности""" + difficultyLevel: DifficultyLevelEnum + + """Рекомендация к выполнению""" + recommendationToExecution: RecommendationToExecutionEnum + + """Теги, которыми помечено задание""" + contentTags: [ContentTag!] + + """Перечень модулей, к которым прикреплено задание""" + taskModules: [TaskModulesInfo!] + + """Информация о скоупе""" + scopeInfo: ScopeInfo + + """""" + criteriaSet: CriteriaSet + + """""" + copyFromTaskId: ID + + """Наличие заданий в модуле в процессе прохождения""" + isStartedByStudents: Boolean + + """Ш21. Тип загружаемого решения""" + taskSolutionType: TaskSolutionTypeEnum +} + +"""Форма работы""" +enum TaskAssignmentEnum { + """индивидуально""" + INDIVIDUAL + + """в группах""" + GROUP + + """в парах""" + IN_PAIRS + + """в классе""" + IN_CLASSROOM + + """в стажировке""" + INTERNSHIP +} + +"""Количество заданий с определенным статусом""" +type TaskCardsStatusesWithQuantity { + """Статус задания""" + amountTaskStatus: AmountTasksInStatusesEnum + + """Количество заданий по этому статусу""" + quantity: Int! + + """Количество новых заданий по этому статусу""" + newTasksQuantity: Int + + """""" + taskDataModel: [TaskDataModel!] +} + +"""Тип проверки задания""" +enum TaskCheckEnum { + """Проверка учителем""" + BY_TEACHER + + """Cамооценка""" + SELF_CHECK + + """Взаимооценка""" + STUDENT_BY_STUDENT + + """Автоматическая проверка""" + AUTO_CHECK + + """Без проверки""" + WITHOUT_CHECK + + """Код ревью""" + CODE_REVIEW + + """Обратная связи наставника""" + MENTOR_FEEDBACK +} + +"""""" +type TaskCheckQueries { + """ + получение количества Заданий на проверке по всем доступным (после применения фильтров) Учителю ГкПП + """ + getStageSubjectGroupsForTeacher( + """Фильтр имени ГКпП""" + groupNameFilter: String + + """Фильтр поиска Заданий на проверку по времени отправки на проверку""" + studentTaskFilter: StudentTaskCheckFilterEnum + + """Фильтр поиска Заданий на проверку НЕ по времени по свойствам Заданий""" + studentTaskNonTimeFilter: StudentTaskCheckNonTimeFilterEnum + + """ + Фильтр поиска Заданий на проверку НЕ по времени по свойствам запрашивающего их Учителя + """ + studentTaskNonTimeTeacherFilter: StudentTaskCheckNonTimeTeacherFilterEnum + ): StageSubjectGroupsByTeacherResponse! + + """""" + getStageSubjectGroupBySubjectsForTeacher( + """""" + studentTaskFilter: StudentTaskCheckFilterEnum + + """Фильтр поиска Заданий на проверку НЕ по времени по свойствам Заданий""" + studentTaskNonTimeFilter: StudentTaskCheckNonTimeFilterEnum + + """ + Фильтр поиска Заданий на проверку НЕ по времени по свойствам запрашивающего их Учителя + """ + studentTaskNonTimeTeacherFilter: StudentTaskCheckNonTimeTeacherFilterEnum + + """""" + filterSubjects: [ID] + + """""" + filterStages: [ID] + ): StageSubjectGroupsBySubjectTeacherResponse! + + """получение заданий на проверке и непрочитанных сообщений""" + getStudentTasksByStageSubjectGroup( + """ИД группы по предмету""" + stageSubjectGroupId: ID! + + """название заданий. Для фильтра поиска по названию задания""" + taskNameFilter: String + + """Фильтр поиска Заданий на проверку по времени отправки на проверку""" + studentTaskFilter: StudentTaskCheckFilterEnum + + """Фильтр поиска Заданий на проверку НЕ по времени по свойствам Заданий""" + studentTaskNonTimeFilter: StudentTaskCheckNonTimeFilterEnum + + """ + Фильтр поиска Заданий на проверку НЕ по времени по свойствам запрашивающего их Учителя + """ + studentTaskNonTimeTeacherFilter: StudentTaskCheckNonTimeTeacherFilterEnum + + """ИД конкретного studentTask""" + directStudentTask: StudentTaskToCheckInput + + """Пейджинг""" + page: PagingInput! + ): StudentTasksByStageSubjectGroupResponse! + + """получение заданий студентов по группе по предмету и заданию""" + getStudentTasksByStageSubjectGroupAndTask( + """идентификатор группы классов по предмету (ГКпП)""" + stageSubjectGroupId: ID! + + """идентификатор задания""" + taskId: ID! + + """пейджинг""" + page: PagingInput! + ): StudentTasksToCheckResponse! + + """получение заданий студентов по группе по предмету и заданию""" + getStudentTasksByStageSubjectGroupAndTaskV2( + """идентификатор группы классов по предмету (ГКпП)""" + stageSubjectGroupId: ID! + + """идентификатор задания""" + taskId: ID! + + """пейджинг""" + page: PagingInput! + ): StudentTasksToCheckResponse! + + """""" + getVerifiedTasksByStageSubjectGroupsForTeacher(filterSubjects: [ID], filterStages: [ID]): StageSubjectGroupsBySubjectTeacherResponse! + + """Получение списка выполненных заданий для учеников в ГКПП""" + getStageSubjectGroupCompletedTasksInfo( + """""" + stageSubjectGroupId: ID! + + """""" + startDate: Date! + + """""" + endDate: Date! + + """""" + filterByStatus: [TaskStatusEnum!]! + + """Фильтр, сортирующий задания по их количеству от большего к меньшему""" + byTaskNumberFilterDesc: Boolean! + + """Фильтр, сортирующий задания по фамилии ученика от А до Я или наоборот""" + byLastNameFilterDesc: Boolean! + + """Фильтр, показывающий задания по названиям модулей""" + goalIds: [ID!]! + + """Поиск по названию задания или имени студента""" + nameOrTitleFilter: String + ): StudentCheckedTasksWithGoalsFilter! + + """ + получение заданий на проверке c количеством ответов и количеством непрочитанных комментариев + """ + getStudentTasksByStageSubjectGroupWithAnswersAndCommentCount( + """ИД группы по предмету""" + stageSubjectGroupId: ID! + + """название заданий. Для фильтра поиска по названию задания""" + taskNameFilter: String + + """Фильтр поиска Заданий на проверку по времени отправки на проверку""" + studentTaskFilter: StudentTaskCheckFilterEnum + + """Фильтр поиска Заданий на проверку НЕ по времени по свойствам Заданий""" + studentTaskNonTimeFilter: StudentTaskCheckNonTimeFilterEnum + ): StudentTasksWithAnswersAndCommentsCountResponse! + + """ + получение заданий на проверке c количеством ответов и количеством непрочитанных комментариев + """ + getStudentTasksByStageSubjectGroupForStudents( + """ИД группы по предмету""" + stageSubjectGroupId: ID! + + """название заданий. Для фильтра поиска по названию задания""" + taskNameFilter: String + + """Фильтр поиска Заданий на проверку по времени отправки на проверку""" + studentTaskFilter: StudentTaskCheckFilterEnum + + """Сортировка по ФИО/количеству заданий""" + studentTaskCheckSorting: StudentTaskCheckSortingEnum + + """Фильтр поиска Заданий на проверку НЕ по времени по свойствам Заданий""" + studentTaskNonTimeFilter: StudentTaskCheckNonTimeFilterEnum + ): StudentTasksByStageSubjectGroupForStudentsResponse! +} + +""" +Данные для отчета "Метрики на вкладке задания" +""" +type TaskCompletedMetrics { + """""" + students: Int! + + """""" + studentsBySchool: Int! + + """""" + accepted1: Int! + + """""" + accepted1BySchool: Int! + + """""" + percentAccepted1: Int! + + """""" + percentAccepted1BySchool: Int! + + """""" + accepted2: Int! + + """""" + accepted2BySchool: Int! + + """""" + percentAccepted2: Int! + + """""" + percentAccepted2BySchool: Int! + + """""" + acceptedMoreThen2: Int! + + """""" + acceptedMoreThen2BySchool: Int! + + """""" + percentAcceptedMoreThen2: Int! + + """""" + percentAcceptedMoreThen2BySchool: Int! + + """""" + failed: Int! + + """""" + failedBySchool: Int! + + """""" + percentFailed: Int! + + """""" + percentFailedBySchool: Int! + + """""" + positiveFeedbacks: Int! + + """""" + positiveFeedbacksBySchool: Int! + + """""" + negativeFeedbacks: Int! + + """""" + negativeFeedbacksBySchool: Int! + + """""" + taskCreated: Date! +} + +"""Конфигурация задания""" +type TaskConfig { + """Показывать или нет правильный ответ после отправки задания на проверку""" + showRightAnswer: Boolean + + """Разрешен или нет отзыв ответа""" + allowWithdrawAnswer: Boolean + + """Без поля ввода ответа""" + withoutAnswerInput: Boolean +} + +"""Конфигурация задания""" +input TaskConfigInput { + """Показывать или нет правильный ответ после отправки задания на проверку""" + showRightAnswer: Boolean + + """Разрешен или нет отзыв ответа""" + allowWithdrawAnswer: Boolean + + """Без поля ввода ответа""" + withoutAnswerInput: Boolean +} + +"""""" +type TaskContent { + """""" + id: ID! + + """Тип контента, содержащегося в задании""" + type: ContentTypeEnum! + + """Содержимое задания""" + body: String @deprecated(reason: "Will be deleted in 26.0.0") + + """Данные внешнего задания""" + external: ExternalTask + + """html из external survey (base64)""" + externalSurvey: String @deprecated(reason: "Will be deleted in 0.14 ") + + """Информация о страницах задания и их содержимом""" + pages: [ContentBodyPage!]! + + """Тип представления контента""" + contentViewType: ContentViewTypeEnum + + """Представление контента в стандартном виде""" + simpleView: ContentSimpleView + + """Представление контента в расширенном виде""" + proView: ContentProView + + """ + Представление контента в мотивирующих заданияс с мигрированным мотивационным блоком + """ + motivationView: ContentMotivationView + + """Представление контента для ш21""" + s21View: ContentS21View + + """Список страниц для контента ш21""" + s21PageList: [ContentS21Page!] + + """Список секций контента""" + sectionList: [ContentSection!] + + """Список секций мотоблока""" + mbSectionList: [ContentMBSection!] + + """Список виджетов контента""" + widgetList: [ContentWidget!] +} + +"""""" +type TaskContentAggregationResponse { + """""" + language: [KeyValue!] + + """""" + criterionScale: [CriterionScale!] + + """""" + kindQuestions: [KindQuestion!] +} + +"""Тип контента задания""" +enum TaskContentTypeEnum { + """ + Внешнее задание, импортируемое как отдельный архив с компилированным приложением - интерактивом. + """ + INNER + + """ + Все типы заданий, создаваемые/используемые с контентом, созданным на платформе ПМО. + """ + GAME + + """Кусок внешнего гейммодуля""" + GAME_GOAL_PART +} + +"""""" +type TaskCriteriaValue { + """Степень соответствия критерию""" + criteriaValue: CriteriaValue! + + """Количество заданий, с данным уровнем соответствия""" + criteriaValueCount: Int! +} + +"""Критерий оценивания задания со шкалой""" +type TaskCriterion { + """ + Идентификатор (xref_task_assessment_criteria_scales.task_criteria_scale_id) + """ + taskCriterionId: ID! + + """Мета-критерий""" + criterion: Criterion! + + """Шкала оценок""" + scale: CriterionScale! + + """Приоритет критерия""" + criterionPriority: Int! +} + +""" +Данные для добавления нового критерия к заданию (xref_task_assessment_criteria_scales) +""" +input TaskCriterionInput { + """ + Идентификатор критерия (task_assessment_criteria.task_assessment_criteria_id) + """ + criterionId: ID! + + """Идентификатор шкалы (task_assessment_scales.task_assessment_scale_id)""" + criterionScaleId: ID! +} + +"""""" +type TaskDataModel { + """""" + stageSubjectGroupId: ID! + + """""" + stageSubjectGroupName: String! + + """""" + taskCount: ID! +} + +"""""" +type TaskDeadline { + """ + Для заданий по ВНЕплановым модулям дедлайном является окончание учебного года, isHardDeadline: false + Дата дедлайна задания + """ + deadline: DateTime! + + """ + Является ли дедлайл жестким. После истечения жесткого дедлайна нельзять отправить задание на проверку + """ + isHardDeadline: Boolean! +} + +"""""" +input TaskEvaluationInput { + """Шкала оценивания""" + gradingScales: [GradingScaleInput!]! + + """Критерий приемки""" + acceptancePercent: Int! +} + +"""Контекст выполнения задания""" +type TaskExecutionContext { + """Флаг - можно ли выполнять задание""" + canExecute: Boolean! + + """Список причин, по которым выполнение задания запрещено""" + executeDenyInfos: [ExecuteDenyInfo!]! + + """ + информации о проводимых внешних обучениях в рамках текущей школы пользователя, в которых участвует данное задание + """ + schoolLearningProgramInfos: [LearningProgramInfo!] +} + +"""Файл, прикладываемый к заданию""" +type TaskFile { + """""" + id: ID! + + """Для студента""" + forStudent: Boolean! + + """Для ученика""" + forTeacher: Boolean! + + """""" + fileName: String! + + """""" + filePath: String! + + """""" + fileSize: Int! + + """Байты""" + extension: FileExtensionEnum! + + """""" + fileOrder: Int! +} + +"""""" +input TaskFileInput { + """""" + forStudent: Boolean! + + """""" + forTeacher: Boolean! + + """""" + fileName: String! + + """""" + filePath: String! + + """""" + fileSize: Int! + + """Байты""" + extension: FileExtensionEnum! + + """""" + fileOrder: Int! +} + +"""Отношение неуспешно переведенных ИД заданий к возникшей ошибке""" +type TaskIdToErrorMapModel { + """Идентификатор задания""" + taskId: ID! + + """Название задания""" + taskName: String! + + """Причина по которой задание не было переведено""" + errorMessage: String! +} + +""" +Тип содержит сопоставление ["ИД задания" -> "признак консистентности задания"] +""" +type TaskIdToTaskConsistency { + """Порядковый номер уровня""" + taskId: ID! + + """Признак консистентности задания""" + isTaskConsistent: Boolean! + + """ + Признак консистентности аттрибутов задания, не зависящих от типа проекта + """ + isCommonAttributesConsistent: Boolean! + + """Признак консистентности задания в контексте экзамена""" + isExamContextConsistent: Boolean! +} + +""" +Атрибуты "консистентности" задания в проекте (необходимы для проверки возможности Публикации проекта) +""" +type TaskInModuleConsistency { + """Идентификатор задания""" + taskId: ID! + + """Название задания""" + name: String! + + """ + Признак наличия контента задания + hasContent: Boolean! + Признак наличия проверок задания + """ + hasTaskChecks: Boolean! + + """Признак равенства суммы весов проверок разных типов для задания 100%""" + hasTaskChecksWeightsSum100: Boolean! + + """Признак наличия обязательного набора параметров проверок задания""" + hasTaskCheckParameters: Boolean! + + """Признак наличия ненулевого количества баллов за задание""" + hasNotZeroPointsForTask: Boolean! + + """Признак наличия ненулевого значения процентов выпонения""" + hasNotZeroPercentageOfCompletion: Boolean! + + """ + Признак равенства суммы распределения процентов по навыкам 100 процентам + """ + hasSoftSkillPercentagesSum100: Boolean! + + """ + Признак заполнения навыка "Лидерство" (вычисляется только для групповых проектов) + """ + hasNotEmptyGroupRoleSkillPercentage: Boolean! + + """ + Признак наличия p2p-проверки для задания// Assign tenantId of "creator"-user with SA_TENANT functional role to new or editing user with SUPER_ADM role, + """ + hasP2pCheck: Boolean! + + """Признак наличия чек-листа для p2p-проверки""" + hasChecklist: Boolean! + + """Признак наличия чек-листа для задания""" + hasP2pCheckQuestionsWeights: Boolean! + + """ + Признак того, что веса вопросов по навыкам в окне "Настройка весов за р2р проверку" в рамках одной секции в сумме составляют 100% + """ + hasP2pCheckQuestionsWeightsSumInSectionEqualTo100: Boolean! + + """ + Признак того, что список навыков в блоке "Расчет оценки за задания" идентичен списку навыков в окне "Настройка весов за р2р проверку" + """ + hasSkillsInTaskPointsFrameMatchToP2pChecklistSkills: Boolean! + + """ + Признак наличия параметра "ID формулы подсчета оценки за все p2p-проверки" для задания + """ + hasFormulaOfP2pResult: Boolean! + + """Признак наличия ненулевых параметров p2p-проверки для задания""" + hasP2pCheckParametersNotEmpty: Boolean! + + """ + Признак наличия параметра p2p-проверки "Количество требуемых проверок" + """ + hasP2pCheckParamReviewUserCountNotEmpty: Boolean! + + """ + Признак наличия положительного параметра p2p-проверки "Длительность проверки (в минутах)" + """ + hasPositiveP2pDuration: Boolean! + + """ + Признак наличия неотрицательного параметра p2p-проверки "Стоимость проверки (Evaluation Points)" + """ + hasNonNegativeP2pEvaluationCost: Boolean! + + """ + Признак наличия неотрицательного параметра p2p-проверки "Процент за бонусную часть" + """ + hasNonNegativeP2pPercentageOfBonus: Boolean! + + """Признак наличия автопроверки для задания""" + hasAutocheck: Boolean! + + """ + Признак наличия автопроверки и отсутствия P2P-Проверки для Экзаменационного задания + """ + hasAutocheckOnlyInExam: Boolean! + + """Признак наличия автотестов для задания""" + hasAutotests: Boolean! + + """ + Признак того, что присутствуют веса вопросов ОСНОВНОЙ части в автотестах и сумма весов для ОСНОВНОЙ части составляет 100% + """ + hasAutocheckBasicKindQuestionsWeightsSumEquals100: Boolean! + + """Признак того, что в автотестах присутствует БОНУСНАЯ часть""" + hasAutocheckParameterPercentageOfBonusAuto: Boolean! + + """ + Признак того, что присутствуют веса вопросов БОНУСНОЙ части в автотестах и сумма весов для БОНУСНОЙ части составляет 100% + """ + hasAutocheckBonusKindQuestionsWeightsSumEquals100: Boolean! + + """ + Признак наличия для задания (в таблице task_parameter_values) ненулевого параметра автопроверки с типом: percentage_of_bonus_auto + """ + hasAutocheckParamPercentageOfBonusAutoNotEmpty: Boolean! + + """ + Признак наличия код-ревью (определяется по edu_power_content.task_check_type_links.task_check_type_id = 9) + """ + hasCodeReview: Boolean! + + """ + Признак наличия ненулевого параметра код-ревью "Максимальное количество проверок" + """ + hasMaxCodeReviewCountNotZero: Boolean! + + """ + Признак наличия ненулевого параметра код-ревью "Длительность проверки (в минутах)" + """ + hasCodeReviewDurationNotZero: Boolean! + + """ + Признак наличия параметра код-ревью "Стоимость проверки" + """ + hasCodeReviewCost: Boolean! + + """ + Признак наличия ненулевого параметра код-ревью "Процент навыка "Код ревью"" + """ + hasCodeReviewSkillPercentageNotZero: Boolean! + + """Признак наличия всех параметров консистентности по код-ревью""" + hasAllCodeReviewParameters: Boolean! + + """Признак того, что задание является Индивидуальным""" + isTaskIndividual: Boolean! + + """Признак консистентности задания""" + isConsistent: Boolean! + + """ + Признак консистентности аттрибутов задания, не зависящих от типа проекта + """ + isCommonAttributesConsistent: Boolean! + + """Признак консистентности задания в контексте экзамена""" + isExamContextConsistent: Boolean! + + """Признак опубликованности задания""" + isPublished: Boolean! + + """Признак принадлежности задания экзаменационному проекту""" + isExamTask: Boolean! + + """Есть ли в for_forks хоть что-нибудь""" + hasForForksAnyFile: Boolean + + """ + Признак равенства суммы распределения процентов по навыкам 100 процентам с учетом текущих страниц + """ + hasExamTestSoftSkillPercentagesSumEquals100: Boolean + + """ + Признак соответствия количества отображаемых виджетов экзаменационного теста установленному порогу + """ + hasExamTestNumberOfWidgetsDoesNotExceedThreshold: Boolean + + """В задаче присутствует контент""" + hasTaskContent: Boolean +} + +""" +Краткая информация о задании в контексте пользователя +Если объект запрашивает родитель, то он возвращается в контексте ребенка, по которому родитель +запрашивает информацию +""" +type TaskInfo { + """Скоуп видимости задания (Приватный, Кастомный, Глобальный)""" + scope: ScopeEnum! + + """ + Может ли текущий пользователь читать контент Задания, определяется через скоуп задания, + права пользователя и авторство + """ + canRead: Boolean! + + """ + Находится ли задание в траектории у ученика. Если запрашивает родитель, то возврщается значение + в контесте его ребенка + ВНИМАНИЕ! Если ученик не может читать контент задания => он не может его проходить. + """ + inTrajectory: Boolean! + + """ + Может ли текущий пользователь изменять контент и мета-информацию задания + """ + canEdit: Boolean! + + """ + Запланирован ли модуль, к которому относится задание, у текущего пользователя. + Запланирован модуль может быть у студента и родителя. Если запланирован у студента => запланирован у его родителя. + """ + planned: Boolean! + + """Найдено ли такое задание в БД""" + found: Boolean! + + """Контекст выполнения задания""" + executionContext: TaskExecutionContext! + + """информация о сессиях печати задания в контексте пользователя""" + printTaskMeta: PrintTaskMeta + + """Может ли пользователь смотреть задания из внешнего конкурса""" + hasPermissionForExternalContest: Boolean + + """""" + goalProductionStatus: ContentEntityProductionStatus + + """Является ли задание обязательным""" + mandatory: Boolean +} + +""" +Файл, прикрепленный к полю Задания "Правильный ответ и критерии оценивания" +""" +type TaskInfoFile { + """""" + id: ID! + + """""" + fileName: String! + + """""" + filePath: String! + + """""" + fileSize: Int! + + """Байты""" + extension: FileExtensionEnum! + + """""" + fileOrder: Int! +} + +"""""" +input TaskInfoFileInput { + """""" + fileName: String! + + """""" + filePath: String! + + """""" + fileSize: Int! + + """Байты""" + extension: FileExtensionEnum! + + """""" + fileOrder: Int! +} + +"""Задание внутри Слота""" +type TaskIntoSlot { + """ + Идентификатор (base_playlist_slot_tasks.base_laylist_slot_task_id или teacher_playlist_slot_task.teacher_playlist_slot_task_id) + """ + id: ID! + + """ + Идентификатор (base_playlist_slot_tasks.base_laylist_slot_task_id или teacher_playlist_slot_task.teacher_playlist_slot_task_id) + """ + taskIntoSlotId: ID! + + """Флаг - обязательно ли это Задание в рамках этого Слота""" + mandatory: Boolean! + + """Задание""" + task: Task! + + """Сквозной порядковый номер задания в плэйлисте""" + order: ID! +} + +"""""" +input TaskIntoSlotInput { + """""" + mandatory: Boolean! + + """""" + taskId: ID! + + """Сквозной порядковый номер задания в плэйлисте""" + order: ID! +} + +"""Задания уровней учебного модуля""" +type TaskLevelModule { + """Идентификатор задания""" + taskId: ID! + + """Название задания""" + taskName: String! + + """Статус задания""" + status: TaskStatusEnum + + """ + Ссылка на задание similar task\id\ + """ + link: String! +} + +"""Сообщение в рамках обсуждения Задания""" +type TaskMessage { + """""" + id: ID! + + """идентификатор задания""" + taskId: ID! + + """источник сообщения (Учитель, Студент, Внешняя система)""" + messageSource: MessageSource + + """само сообщение""" + message: Message! + + """файлы прикрепленные к сообщению""" + files: [File!]! + + """факты прочтения комментария""" + readFacts: [TaskMessageReadFact!]! +} + +"""факт прочтения комментария""" +type TaskMessageReadFact { + """идентификатор факта прочтения комментария""" + id: ID! + + """идентификатор комментария""" + messageId: ID! + + """пользователь""" + user: User! + + """время прочтения сообщения""" + createTime: DateTime! +} + +"""""" +input TaskMetaInput { + """""" + title: String! + + """""" + type: TaskTypeEnum! + + """""" + checkType: TaskCheckEnum! + + """""" + checkTypes: [TaskCheckEnum!] + + """""" + externalSystemCode: String + + """""" + externalSystemSync: Boolean + + """""" + assignmentType: TaskAssignmentEnum! + + """""" + teamSettingTask: TeamSettingTaskInput + + """""" + code: String + + """Количество попыток""" + attemptsNumber: Int + + """Неограниченное количество попыток""" + unlimitedAttempts: Boolean! + + """""" + laboriousness: Int! + + """""" + author: String! + + """""" + licenseId: ID + + """""" + links: String! + + """""" + softSkillTypes: [SoftSkillTypePowerInput!]! + + """""" + info: String! + + """""" + studentHint: String! + + """""" + teacherHint: String! + + """идентификатор педтехники""" + pedagogicalTechniqueId: ID + + """Файлы, прикрепленные к Заданию""" + attachmentFiles: [TaskFileInput!]! + + """ + Файлы, прикрепленные к полю Задания "Правильный ответ и критерии оценивания" + """ + infoAttachmentFiles: [TaskInfoFileInput!]! + + """Информация для установки скоупа""" + scope: ScopeForSet + + """Заметка""" + note: String + + """Список тегов""" + tags: [String!] + + """Признак архивности""" + archived: Boolean + + """Признак является ли задание оффлайновым""" + isOffline: Boolean + + """""" + showAnswerInput: Boolean + + """Конфигурация задания""" + taskConfig: TaskConfigInput + + """Список пар "критерий-шкала" для Задания""" + taskCriteriaInput: [TaskCriterionInput!]! + + """ + Со-авторы задания. Пользователи, которым задание будет доступно для чтения даже в приватном скоупе. + """ + coAuthorIds: [UUID!]! + + """Уровень сложности""" + difficultyLevel: DifficultyLevelEnum + + """Рекомендация к выполнению""" + recommendationToExecution: RecommendationToExecutionEnum + + """Тэги""" + contentTags: [ContentTagInput!] + + """""" + criteriaSet: CriteriaSetInput + + """Ш21. Тип загружаемого решения""" + taskSolutionType: TaskSolutionTypeEnum +} + +""" +Перечень модулей, к которым прикреплено задание, сгруппированные по типу +""" +type TaskModulesInfo { + """""" + executionType: ModuleExecutionType! + + """""" + modules: [Goal!]! +} + +"""Непрочитанные уведомление по заданию""" +type TaskNotification { + """Непрочитанное уведомление по заданию""" + unreadTaskNotification: Notification! + + """Задание, в связи с действием по которому было отправлено уведомление""" + task: Task! + + """Статус Задания на момент отправки Уведомления""" + taskStatusOnNotificationTime: TaskStatusEnum +} + +"""""" +type TaskOnCheckDetailed { + """""" + teacherId: UUID! + + """""" + teacherName: String! + + """""" + subjectId: Int! + + """""" + subjectName: String! + + """""" + stageId: Int! + + """""" + stageName: String! + + """""" + stageGroupId: Int! + + """""" + stageGroupName: String! + + """""" + stageSubjectGroupId: Int! + + """""" + stageSubjectGroupName: String! + + """""" + studentId: UUID! + + """""" + studentName: String! + + """""" + answerDate: Date! + + """""" + goalId: Int! + + """""" + goalName: String! + + """""" + taskId: Int! + + """""" + taskName: String! +} + +"""""" +input TaskPreviewEvaluationWidgetInput { + """Тело виджета""" + widgetBody: WidgetInput! + + """Ответ на виджет""" + answer: AnswerToWidgetInput! +} + +"""""" +type TaskPreviewEvaluationWidgetResult { + """Идентифкатор виджета""" + widgetId: ID! + + """Статус ответа на виджет""" + status: TaskWidgetAnswerStatusEnum! + + """Тело ответа""" + answerBody: WidgetAnswerBody! +} + +""" +Данные для отчета "Публичные метрики по заданию" +""" +type TaskPublicMetrics { + """""" + students: Int! + + """""" + studentsBySchool: Int! + + """""" + accepted: Int! + + """""" + acceptedBySchool: Int! + + """""" + percentAccepted: Float! + + """""" + percentAcceptedBySchool: Float! + + """""" + failed: Int! + + """""" + failedBySchool: Int! + + """""" + percentFailed: Float! + + """""" + percentFailedBySchool: Float! + + """""" + positiveFeedbacks: Int! + + """""" + positiveFeedbacksBySchool: Int! + + """""" + negativeFeedbacks: Int! + + """""" + negativeFeedbacksBySchool: Int! +} + +"""Ответ на запрос обезличенных таймслотов для календаря s21""" +type TaskReviewCountInfo { + """Количество проверок для сдачи проекта""" + reviewUsersCount: Int! + + """Количество запланированных проверок""" + relevantReviewUsersCount: Int! +} + +"""""" +enum TaskSearchTypeEnum { + """Классные""" + CLASSWORK + + """Домашние""" + HOMEWORK + + """Остальные""" + OTHER +} + +"""Набор Заданий для Учебного Модуля""" +type TaskSet { + """ + Идентификатор (base_playlists.base_playlist_id или teacher_playlists.teacher_playlist_id) + """ + id: ID! + + """ + Идентификатор (base_playlists.base_playlist_id или teacher_playlists.teacher_playlist_id) + """ + taskSetId: ID! + + """Название плейлиста""" + name: String! + + """Уровни Учебного Модуля с детализацией""" + slots: [TaskSetSlot!]! + + """Тип Набора Заданий""" + type: PlaylistType! + + """Пользователь создавший набор заданий""" + createUser: User! + + """ + Учительский контекст, в котором содержится информация, на кого назначена эта система заданий в тех группах, + в которых учитель ведет. Возвращается null, если текущий пользователь не имеет роль учителя в текущей школе. + """ + assignContext: TeacherTaskSetAssignContext +} + +"""""" +input TaskSetInput { + """Идентифкатор Плейлиста, необходим при изменении""" + taskSetId: ID + + """Тип Плейлиста""" + taskSetType: PlaylistType! + + """Название Плейлиста""" + name: String! + + """Идентификатор Учебного Модуля Плейлиста (goals.goal_id)""" + moduleId: ID! + + """Слоты Плейлиста""" + slots: [TaskSetSlotInput!]! +} + +""" +Тип содержит успеваемость учеников группы по предмету по определенной системе заданий модуля +""" +type TaskSetPerformance { + """Идентификатор модуля""" + goalId: ID! + + """Название учебного модуля""" + title: String! + + """Идентификатор системы заданий""" + taskSetId: ID! + + """Тип системы заданий""" + type: PlaylistType! + + """Название системы заданий""" + taskSetName: String! + + """Количество элементов целей в системе заданий модуля""" + goalElementsCount: Int + + """ + Признак, что система задания модуля является текущей в данный момент времени в общем плане класса + """ + currentGoal: Boolean! + + """ + дата начала модуля, к которому относится система заданий, по плану класса + """ + startDate: DateTime + + """ + по плану класса дата окончания модуля, к которому относится система заданий + """ + endDate: DateTime + + """Количество проверочных заданий в системе заданий модуля""" + checkTaskCount: Int + + """Количество учебных заданий в системе заданий модуля""" + trainingTaskCount: Int + + """Успеваемость ученика по системе заданий модуля""" + studentTaskSetPerformance: [StudentTaskSetPerformance!]! + + """Успеваемость учеников по уровням системы заданий модуля""" + levelPerformance: [LevelPerformance!]! +} + +"""Набор слотов внутри Набора Заданий""" +type TaskSetSlot { + """ + Идентификатор (base_playlist_slots.base_playlist_slot_id или teacher_playlist_slots.teacher_playlist_slot_id) + """ + id: ID! + + """ + Идентификатор (base_playlist_slots.base_playlist_slot_id или teacher_playlist_slots.teacher_playlist_slot_id) + """ + slotId: ID! + + """Минимальное количество Заданий, которое необходимо выполнить""" + minimumNumberOfTasks: Int! + + """Флаг - Слот для проверочных Заданий""" + isCheck: Boolean! + + """тип слота""" + slotType: PlaylistSlotTypeEnum + + """Идентификатор Элемента Цели, по которому создан этот Слот""" + goalElementId: ID! + + """Задания внутри Слота""" + tasks: [TaskIntoSlot!]! +} + +"""""" +input TaskSetSlotInput { + """""" + minimumNumberOfTasks: Int! + + """""" + check: Boolean! + + """тип слота""" + slotType: PlaylistSlotTypeEnum + + """""" + goalElementId: ID! + + """""" + tasks: [TaskIntoSlotInput!]! +} + +"""Группа гибких навыков в связке с весом""" +type TaskSoftSkillType { + """Идентификатор""" + id: ID! + + """Идентификатор задания""" + taskId: ID! + + """Идентификатор гибкого навыка""" + softSkillTypeId: ID! + + """Наименование""" + name: String! + + """Описание""" + description: String! + + """Категория""" + category: SoftSkillCategoryEnum! + + """В архиве""" + archive: Boolean! + + """Код""" + code: String! + + """Группа""" + group: SoftSkillGroupEnum! + + """Дескриптор""" + descriptor: String! + + """Относительное ссылка в файловый сервис на изображением мягкого навыка""" + imageUrl: String! + + """Цветовая кодировка""" + hueSaturationLightness: String! + + """Вес (временно int - для интеграции с фронтом, верный тип double)""" + power: Int! +} + +"""S21. Тип загружаемого решения""" +enum TaskSolutionTypeEnum { + """""" + GITLAB + + """""" + PLATFORM +} + +""" +Входные параметры <идентификатор студента, идентифкатор задания, новый статус задания, новый статус ответа> +в рамках миграции этому студенту будет проставлен новый статус зтого задания и новый статус ответа на это задание +""" +input TaskStatusAndAnswerStatusForChangeInput { + """edu_power_global.students.student_id""" + studentId: UUID! + + """edu_power_content.tasks.task_id""" + taskId: ID! + + """""" + newTaskStatus: TaskStatusEnum! + + """""" + newAnswerStatus: AnswerStatusEnum! +} + +"""""" +enum TaskStatusEnum { + """Назначено""" + ASSIGNED + + """Требуется проверка учителем""" + NEED_CHECK + + """Задание зачтено""" + ACCEPTED + + """Задание провалено""" + FAILED + + """Задание провалено, но у пользователя есть еще попытки его пройти""" + TRY_AGAIN + + """Задание в работе (прохождение тренажера)""" + IN_PROGRESS +} + +""" +Тип содержит количество заданий с определенным статусом и количество заданий с вопросом от ученика +""" +type TaskStatusQuantityWithQuestion { + """Количество заданий в определенном статусе""" + statusesQuantity: [TaskStatusWithQuantity!]! + + """количество заданий с вопросом от ученика""" + questionsQuantity: Int! +} + +"""Количество заданий с определенным статусом""" +type TaskStatusWithQuantity { + """Статус задания""" + taskStatus: TaskStatusEnum + + """Количество заданий по этому статусу""" + quantity: Int! +} + +"""Информация о типах заданий""" +type TaskType { + """ID""" + id: ID! + + """Название типа""" + name: String! + + """Тип задния""" + type: TaskTypeEnum! +} + +"""""" +enum TaskTypeEnum { + """Мотивационное""" + MOTIVATION + + """Проверочное""" + CHECK + + """Учебное""" + TRAINING + + """Теория""" + THEORY +} + +"""Статус ответа на виджет""" +enum TaskWidgetAnswerStatusEnum { + """Создан""" + CREATED + + """Правильно""" + ACCEPTED + + """Неправильно""" + REJECTED +} + +"""Статус виджета задания пользователя""" +enum TaskWidgetStatusEnum { + """Не отвечал""" + ASSIGNED + + """На проверке""" + NEED_CHECK + + """Ответил правильно""" + ACCEPTED + + """Ответил неправильно""" + FAILED +} + +"""""" +type TaskWithAssignmentType { + """""" + taskId: ID! + + """""" + assignmentType: TaskAssignmentEnum! +} + +"""Задание с колличеством студентов группы выполнивших его""" +type TaskWithCompletedByStudentsInGroupAttribute { + """Задание""" + task: Task! + + """Колличество студентов группы выполнивших его""" + quantityOfStudentsInGroupCompletedThisTask: Int! +} + +"""""" +type TaskWithCounters { + """""" + countStudentAnswers: Int! + + """""" + studentAnswerIds: [ID!] + + """""" + countUnreadMessages: Int! + + """""" + minExpiredDate: Date + + """""" + isExpired7Days: Boolean! + + """""" + isExpired3Days: Boolean! + + """""" + task: Task! +} + +""" +тип агрегированных данных из плана обучения, который связывает задание и его уровень цели у студента. Такакая агрегация нужна для шторы офлайн заданий +""" +type TaskWithLevel { + """Уровень цели по заданию у студента""" + level: Float! + + """Задание""" + task: StudentTask! +} + +"""Количество заданий по уровню цели""" +type TasksCountByGoalLevel { + """""" + goalLevelValueId: Int! + + """""" + goalLevelValueName: String! + + """""" + tasksCount: Int! +} + +"""Количество заданий по типу проверки""" +type TasksCountByTaskCheckType { + """""" + taskCheckType: Int! + + """""" + taskCheckTypeDescription: String! + + """""" + tasksCount: Int! +} + +"""Данные по кол-ву заданий с разными типами проверки и уровнями целей""" +type TasksCountInfo { + """""" + tasksCountByGoalLevels: [TasksCountByGoalLevel!]! + + """""" + tasksCountByTaskCheckTypes: [TasksCountByTaskCheckType!]! +} + +"""""" +type TasksOnCheck { + """""" + teacherId: UUID! + + """""" + teacherName: String + + """""" + subjectName: String! + + """""" + stageGroup: String! + + """""" + stageSubjectGroup: String! + + """""" + tasksOnCheck: Int! + + """""" + goalName: String + + """""" + stageSubjectGroupId: Int + + """""" + subjectId: Int + + """""" + goalId: Int +} + +"""""" +input TasksOnCheckInput { + """""" + startDate: DateTime! + + """""" + endDate: DateTime! + + """""" + reportDate: DateTime + + """""" + taskAnswerStartDate: DateTime + + """""" + taskAnswerEndDate: DateTime + + """""" + stageId: Int + + """""" + stageGroupId: Int + + """""" + subjectId: Int + + """""" + stageSubjectGroupId: Int + + """""" + teacherId: UUID +} + +"""""" +type TasksWithCount { + """Общее количество заданий""" + count: Int! + + """Список заданий на страницу (используется в запросах с пагинацией)""" + tasks: [Task!]! +} + +"""Учитель""" +type Teacher { + """ID учителя (teacherId)""" + id: ID! + + """Учитель как пользователь""" + user: User! + + """Список предметов учителя, которые он может преподавать""" + subjects: [Subject!]! + + """""" + classrooms: [ClassRoom!]! @deprecated(reason: "Используйте classroom") + + """Кабинет учителя""" + classroom: ClassRoom +} + +"""""" +type TeacherCommentInfo { + """Комментарий Учителя при зачтении Уровня""" + teacherComment: String! + + """Имя и Фамилия Учителя""" + teacherFullName: String! + + """Аватар Учителя""" + teacherAvatarUrl: String! +} + +"""Общая информация по учителю""" +type TeacherCommonInfo { + """""" + teacherId: UUID! + + """""" + userId: UUID! +} + +"""Модель для расписания учителя""" +type TeacherDiary { + """перечень уроков""" + lessons: [TeacherDiaryLesson!]! + + """""" + userEvents: [TeacherDiaryEvent!]! +} + +"""Элемент события для расписания учителя""" +type TeacherDiaryEvent { + """Идентификатор события""" + id: ID! + + """Название события""" + name: String! + + """Описание события""" + description: String + + """Дата и время начала события""" + startTime: DateTime! + + """Дата и время окончания события""" + endTime: DateTime! + + """Признак события на весь день""" + allDayEvent: Boolean! + + """Местонахождение (локация)""" + location: String! + + """Категория события""" + calendarEventCategory: CalendarEventCategory + + """Тип события""" + eventType: CalendarEventType + + """Идентификатор типа групп, которые могут быть участниками события""" + participantGroupTypeId: UUID + + """Идентификатор пользователя - создателя события""" + creatorId: UUID + + """Правило для повторяющегося события""" + recurrenceRule: String + + """До какого числа действует правило для повторяющегося события""" + recurrenceEndTs: DateTime + + """ + Идентификатор основного повторяющегося события для события-исключения из правила + """ + parentCalendarEventId: UUID + + """Временная метка создания события""" + createdTs: DateTime +} + +"""Элемент расписания(урок) учителя""" +type TeacherDiaryLesson { + """Наименование класса""" + stageGroupName: String! + + """Идентификатор урока""" + lessonId: ID! + + """Номер элемента в расписании (урока)""" + number: String! + + """Название (номер) кабинета""" + classRoomName: String! + + """Дата и время начала""" + startTs: DateTime! + + """Дата и время окончания""" + endTs: DateTime! + + """Название расписания(группы временных слотов)""" + timeslotName: String + + """Предмет""" + subject: Subject! + + """Признак контрольной на уроке""" + hasControlWork: Boolean! + + """Идентификатор группы по предмету""" + stageSubjectGroupId: ID! + + """Признак online урока""" + onlineLesson: Boolean! + + """Модуль по предмету, соответствующий плану""" + module: StudentDiaryModule + + """План урока""" + plan: TeacherDiaryLessonPlan + + """Ссылка на онлайн-урок""" + onlineLessonLink: String +} + +"""План урока для расписания учителя""" +type TeacherDiaryLessonPlan { + """Идентификатор плана""" + id: ID + + """Название плана""" + name: String +} + +"""""" +type TeacherMonitoring { + """""" + orderNumber: Int! + + """""" + metricCode: String + + """""" + metricName: String! + + """""" + level: Int! + + """""" + totalUniqueCount: Int! + + """""" + entries: [SchoolMonitoringEntry!] +} + +"""""" +type TeacherMutations { + """""" + updateModuleMeta(moduleId: ID!, module: StudyModuleMetaInput!): StudyModule! + + """""" + setModuleLevels(moduleId: ID!, levels: [StudyModuleLevelInput!]!): StudyModule! @deprecated(reason: "Use saveModule instead. Will be deleted in 0.13.0") + + """Создание и редактирование мета информации о проекте""" + saveExamModuleSettings(moduleSettings: ExamModuleSettingsInput!): ExamModuleSettings! + + """Создание и редактирование "Общей информации" о проекте""" + saveExamModuleGeneralInformation(generalInformation: ExamModuleGeneralInfoInput!): ExamModuleGeneralInfo! + + """Создание и редактирование "Заданий" проекта""" + saveExamModuleTasks(tasks: ExamModuleTasksInput!): ExamModuleTasks! + + """создание и редактирование модуля""" + saveModule(moduleId: ID, module: StudyModuleMetaInput, levels: [StudyModuleLevelInput!]): StudyModule! + + """создание и редактирование мотивационного блока""" + saveMotivationBlock(motivationBlock: MotivationBlockInput!): MotivationBlock! + + """создание и редактирование секций мотивационного блока""" + saveMotivationSection(motivationSection: MotivationBlockSectionInput!): MotivationBlockSection! + + """удалить мотивационный блок по id модуля""" + deleteMotivationBlockByModuleId(goalID: ID!): Boolean! + + """""" + readNotification(notificationId: ID!): ID! + + """""" + readAllNotifications: Boolean! + + """ + Пометить прочитанными все Уведомления связанные с изменениями расписания для данного Учителя + """ + readChangeScheduleNotifications: Boolean! + + """ + Создать Подгруппу по идентификатору Группы по Предмету (stage_subject_groups.stage_subject_group_id) + присвоить ей имя, и добавить в нее студентов по идентификаторам студентов (students.student_id) + """ + createSubgroup(classSubjectId: ID!, name: String!, studentIds: [UUID!]!): ClassSubject! + + """ + Изменить состав Подгруппы по идентификатору Подгруппы (stage_subject_subgroups.stage_subject_subgroup_id) + и идентфикаторам ВСЕХ студентов(students.student_id), которые должны в итоге оказаться в Подгруппе + а также изменить название Подгруппы (stage_subject_subgroups.name) + """ + changeSubgroup(subgroupId: ID!, studentIds: [UUID!]!, name: String!): ClassSubject! + + """ + Удалить Подгруппу по идентфикатору Подгруппы (stage_subject_subgroups.stage_subject_subgroup_id) + """ + removeSubgroup(subgroupId: ID!): ClassSubject! + + """Добавить заметку к плану урока""" + addNoteToLessonPlan(newLessonNote: LessonNoteToLessonPlanInput!): LessonNoteToLessonPlan! + + """Изменить заметку к плану урока""" + changeLessonNoteToLessonPlan(noteId: ID!, text: String!): LessonNoteToLessonPlan! + + """Удалить заметку к уроку""" + deleteLessonNote(lessonNoteId: ID!): Boolean! + + """Добавить тему к плану урока""" + addTopicToLessonPlan(newLessonTopic: LessonTopicToLessonPlanInput!): LessonTopicToLessonPlan! + + """Изменить тему к плану урока""" + changeLessonTopicToLessonPlan(topicId: ID!, topic: String!): LessonTopicToLessonPlan! + + """Добавить ссылку на онлайн-урок к плану урока""" + addOnlineLessonToLessonPlan(newOnlineLesson: OnlineLessonToLessonPlanInput!): OnlineLessonToLessonPlan! + + """ + Добавить ссылку на онлайн-урок ко всем будущим урокам по этому предмету-классу-учителю + """ + addOnlineLessonForAllFutureLessons(stageSubjectGroupId: ID!, onlineLessonLink: String!, videoconferenceType: VideoconferenceType!): Int! + + """ + Удалить ссылки на онлайн-уроки по всем будущим урокам по этому предмету-классу-учителю + """ + deleteOnlineLessonForAllFutureLessons(stageSubjectGroupId: ID!): Int! + + """Изменить ссылку на онлайн-урок к плану урока""" + changeOnlineLessonToLessonPlanLink(onlineLessonId: ID!, onlineLessonLink: String!, videoconferenceType: VideoconferenceType!): OnlineLessonToLessonPlan! + + """Изменяет статус задания в контексте студента""" + changeTaskProgressStatus( + """идентификатор студента""" + studentId: ID! + + """идентификатор задания""" + taskId: ID! + + """новый статус задания""" + taskStatus: TaskStatusEnum! + + """ + оценка, выставленная учителем по заданию, оценку выставлять необязательно + """ + governmentMarkId: ID + + """критериальные оценки по заданию, массив может быть пустым""" + criteriaEvaluations: [EvaluatedTaskCriterionInput!]! + ): StudentTaskInfo! + + """Создать сообщение к заданию""" + createTaskMessage(taskId: ID!, text: String!, studentId: UUID!, files: [FileInput!]!, readOnly: Boolean): TaskMessage! + + """Создать факты прочтения комментариев""" + createTaskMessageReadFacts(messageIds: [ID!]!): [TaskMessageReadFact!]! + + """Пометить сообщение к заданию как удаленное""" + markTaskMessageAsRemoved(messageId: ID!): TaskMessage! + + """Изменить сообщение к заданию и/или прикрепленные к сообщению файлы.""" + editTaskMessage( + """Идентификатор сообщения""" + messageId: ID! + + """Текст сообщения""" + text: String! + + """ + Список файлов на момент сохранения текущего состояния сообщения. Файлы будут соответствовать переданному списку - пустой список удалит файлы + """ + files: [FileInput!]! + ): TaskMessage! + + """""" + updateModuleGoalElements(moduleId: ID!, changedGoalElements: [StudyModuleGoalElementInput!]!, deletedGoalElementIds: [ID!]!): StudyModule! + + """""" + attachTaskMessageFile(messageId: ID!, file: FileInput): File! + + """""" + deattachTaskMessageFile(messageFileId: ID!): ID! + + """ + Создание Персонального Плана по идентификатору Студента внутри Группы по Предмету(stage_subject_subgroup_students.stage_subject_subgroup_student_id) + c проверками и без учета наличия плана на класс. + в случае isNeedToCheckAffecting = true план будет создан только если + в результате создания персонального плана не изменится целевой уровень ни одного модуля к выполнению которого приступил ученик, + при isNeedToCheckAffecting = false план будет создан в любом случае + startDate - планируемая дата начала выполнения персонального + endDate - планируемая дата окончания выполнения персонального + """ + createPersonalPlanWithCheckingWithoutClassPlan(studentInSubgroupId: ID!, frames: [PersonalPlanFrameInput!]!, status: PlanStatusEnum!, isNeedToCheckAffecting: Boolean!, startDate: String, endDate: String, trajectory: String, orderNumber: Int): PersonalPlanChangeResponse! + + """ + Создание Персонального Плана по идентификатору Студента внутри Группы по Предмету(stage_subject_subgroup_students.stage_subject_subgroup_student_id) + c проверками. в случае isNeedToCheckAffecting = true план будет создан только если + в результате создания персонального плана не изменится целевой уровень ни одного модуля к выполнению которого приступил ученик, + при isNeedToCheckAffecting = false план будет создан в любом случае + startDate - планируемая дата начала выполнения персонального + endDate - планируемая дата окончания выполнения персонального + """ + createPersonalPlanWithChecking(studentInSubgroupId: ID!, frames: [PersonalPlanFrameInput!]!, status: PlanStatusEnum!, isNeedToCheckAffecting: Boolean!, startDate: String, endDate: String, trajectory: String, orderNumber: Int): PersonalPlanChangeResponse! + + """ + Изменение персонального плана по идентификатору (personal_subject_plans.personal_subject_plan_id) с проверками. + в случае isNeedToCheckAffecting = true план будет изменен только если не изменился целевой уровень ни одного модуля + к выполнению которого приступил ученик, при isNeedToCheckAffecting = false план будет изменен в любом случае + """ + changePersonalPlanWithChecking(planId: ID!, frames: [PersonalPlanFrameInput!]!, isNeedToCheckAffecting: Boolean!, startDate: String, endDate: String, trajectory: String, orderNumber: Int): PersonalPlanChangeResponse! + + """Bootcamp - changePersonalPlanWithChecking""" + changePersonalPlanWithCheckingForBTC(planId: ID!, frames: [PersonalPlanFrameInput!]!, isNeedToCheckAffecting: Boolean!, startDate: String, endDate: String, trajectory: String!, orderNumber: Int): PersonalPlanChangeResponse! @deprecated(reason: "same with changePersonalPlanWithChecking") + + """ + Удаляет существующий персональный план ученика c проверками. в случае isNeedToCheckAffecting = true план будет удален только если + в результате удаления персонального плана не изменится целевой уровень ни одного модуля к выполнению которого приступил ученик, + при isNeedToCheckAffecting = false план будет удален в любом случае + """ + removePersonalPlanWithChecking(planId: ID!, isNeedToCheckAffecting: Boolean!): PersonalPlanChangeResponse! + + """ + Изменение статуса Персонального Плана по Идентификатору (personal_subject_plans.personal_subject_plan_id) + """ + setPersonalPlanStatus(planId: ID!, status: PlanStatusEnum!): PersonalPlan! + + """ + Создание Плана на Класс по Предмету с назначением плану определенного статуса(stage_subject_group_plans) + """ + createClassPlan( + """ + идентификатор Группы по Предмету (stage_subject_groups.stage_subject_group_id) + """ + classSubjectId: ID! + + """фреймы нового плана""" + frames: [ClassPlanFrameInput!]! + + """статус плана""" + status: PlanStatusEnum + ): ClassPlan! + + """ + Изменение Плана на Класс по Предмету по идентификатору (stage_subject_group_plan_id) с проверками. + в случае isNeedToCheckAffecting = true план будет изменен только если не изменился целевой уровень ни одного модуля + к выполнению которого приступил ученик, при isNeedToCheckAffecting = false план будет изменен в любом случае + """ + changeClassPlanWithChecking(planId: ID!, frames: [ClassPlanFrameInput!]!, isNeedToCheckAffecting: Boolean!): ClassPlanChangeResponse! + + """ + Удаление модулей из Плана на Класс по Предмету по идентификатору (stage_subject_group_plan_id) с проверками + """ + removeModulesFromPlan(planId: ID!, moduleIdsToRemove: [Int!]!, isNeedToCheckAffecting: Boolean!): ClassPlanChangeResponse! + + """Изменение статуса Плана на Класс По Предмету""" + setClassPlanStatus(planId: ID!, status: PlanStatusEnum!): ClassPlan! + + """Создание Пустого Набора Заданий для Учебного Модуля""" + createEmptyTaskSet(taskSet: TaskSetInput!): TaskSet! + + """""" + createEmptyTaskSetV2(taskSet: TaskSetInput!): TaskSet! + + """Изменение существующего Набора Заданий""" + changeTaskSet(taskSetId: ID!, slots: [TaskSetSlotInput!]!, playlistType: PlaylistType!): StudyModule! + + """Удаление Плейлиста по идентификатору (base_playlists.base_playlist_id)""" + removeTaskSet(taskSetId: ID!, taskSetType: PlaylistType!): Boolean! @deprecated(reason: "Use removeTaskSetWithChecking instead. Will be deleted in 0.12.0") + + """ + Удаление Плейлиста по идентификатору с проверками (base_playlists.base_playlist_id или teacher_playlists.teacher_playlist_id) + """ + removeTaskSetWithChecking(request: RemoveTaskSetRequest!): RemoveTaskSetResponse! + + """ + Удаление Плейлиста по идентификатору с проверками (base_playlists.base_playlist_id или teacher_playlists.teacher_playlist_id) + """ + removeTaskSetWithCheckingV2(request: RemoveTaskSetRequest!): RemoveTaskSetResponse! + + """Персонализировать Учебный Модуль студента""" + personalizeStudentModuleAndChangeTeacherTaskSets(request: PersonalizeStudentModuleAndChangeTeacherTaskSetsRequest!): PersonalizeStudentModuleAndChangeTeacherTaskSetsResponse! @deprecated(reason: "Will be deleted in 0.15.0") + + """""" + personalizeStudentModuleAndChangeTeacherTaskSetsV2(request: PersonalizeStudentModuleAndChangeTeacherTaskSetsRequest!): PersonalizeStudentModuleAndChangeTeacherTaskSetsResponse! @deprecated(reason: "Will be deleted in 0.15.0") + + """Ответ принят, задание зачтено""" + acceptStudentAnswer(studentId: ID!, answerId: ID!, governmentMarkId: Int, criteriaEvaluations: [EvaluatedTaskCriterionInput!]!): StudentTaskInfo! + + """Ответ не принят, задание провалено""" + rejectStudentAnswer(studentId: ID!, answerId: ID!, governmentMarkId: Int, criteriaEvaluations: [EvaluatedTaskCriterionInput!]!, finalTry: Boolean!): StudentTaskInfo! + + """Обновление статусов достигнутых навыков и уровней в модуле студента""" + updateStudentModuleAchievementAndComment( + """Идентификатор студента""" + studentId: UUID! + + """Идентификатор модуля в котором произошли изменения""" + moduleId: ID! + + """Идентификаторы уровней модуля, которые закрыл Учитель напрямую""" + achievedGoalLevelIds: [ID!]! + + """Идентификаторы навыков уровня модуля, которые закрыл Учитель напрямую""" + achievedSkillIds: [ID!]! + + """ + Максимально достигнутый уровень Учебного Модуля (параметр используется для половинчатых уровней) + """ + maxAchievedLevel: Float + + """Комментарий по достижениям студента в контексте учебного модуля""" + comment: String + ): StudentModule! + + """Установить/снять флаг "Архив" для учебных модулей""" + setStudyModuleArchiveFlag(studyModuleIds: [ID!]!, archive: Boolean!, cascade: Boolean): [StudyModule!]! + + """""" + setGoalLandingTemplateAttributes(moduleId: ID!, attributes: StudyModuleLandingTemplateAttributesInput!): Boolean! + + """ + Стиражировать групповой План на Группы по Предмету или на Студентов как персональный + """ + copyClassPlan( + """ + идентификатор копируемого плана (stage_subject_group_plans.stage_subject_group_id) + """ + classPlanId: ID! + + """ + идентификаторы Групп по Предмету (stage_subject_groups.stage_subject_group_id), на которые копируется план + """ + classSubjectIds: [ID!]! + + """ + идентификаторы студентов в подгруппах (stage_subject_subgroup_students.stage_subject_subgroup_student_id) + на которые копируется план как персональный + """ + studentInSubgroupIds: [ID!]! + + """статус, с которым копируется план""" + status: PlanStatusEnum! + ): ClassPlan! + + """Стиражировать Персональный План на Группы по Предмету или на Студентов""" + copyPersonalPlan( + """ + идентификатор копируемого плана (personal_subject_plans.personal_subject_plan_id) + """ + personalPlanId: ID! + + """ + идентификаторы Групп по Предмету (stage_subject_groups.stage_subject_group_id), на которые копируется план + """ + classSubjectIds: [ID!]! + + """ + идентификаторы студентов в подгруппах (stage_subject_subgroup_students.stage_subject_subgroup_student_id) + на которые копируется план как персональный + """ + studentInSubgroupIds: [ID!]! + ): PersonalPlan! + + """Стиражировать Учительский Плейлист""" + copyTeacherTaskSet( + """ + идентификатор копируемого Учительского Плейлиста (teacher_playlists.teacher_playist_id) + """ + teacherTaskSetId: ID! + + """ + идентификаторы Групп по Предмету (stage_subject_groups.stage_subject_group_id), на которые копируется Учительский Плейлист + """ + classSubjectIds: [ID!]! + + """ + идентификаторы студентов в подгруппах (stage_subject_subgroup_students.stage_subject_subgroup_student_id) + на которые копируется Учительский Плейлист + """ + studentInSubgroupIds: [ID!]! + + """ + исключать ли изменение СЗ Персональных планов при изменении СЗ Плана на Класс + """ + excludePersonalPlansFromChangingClassPlan: Boolean + ): TaskSet! + + """Стиражировать Базовый Плейлист""" + copyBasePlaylist( + """ + идентификатор копируемого Базового Плейлиста (base_playlists.base_playist_id) + """ + basePlaylistId: ID! + + """ + идентификаторы Групп по Предмету (stage_subject_groups.stage_subject_group_id), на которые копируется Базовый Плейлист + """ + classSubjectIds: [ID!]! + + """ + идентификаторы студентов в подгруппах (stage_subject_subgroup_students.stage_subject_subgroup_student_id) + на которые копируется Базовый Плейлист + """ + studentInSubgroupIds: [ID!]! + + """ + исключать ли изменение СЗ Персональных планов при изменении СЗ Плана на Класс + """ + excludePersonalPlansFromChangingClassPlan: Boolean + ): TaskSet! + + """Стиражировать Учительский Плейлист""" + copyTeacherTaskSetV2( + """ + идентификатор копируемого Учительского Плейлиста (teacher_playlists.teacher_playist_id) + """ + teacherTaskSetId: ID! + + """ + идентификаторы Групп по Предмету (stage_subject_groups.stage_subject_group_id), на которые копируется Учительский Плейлист + """ + classSubjectIds: [ID!]! + + """ + идентификаторы студентов в подгруппах (stage_subject_subgroup_students.stage_subject_subgroup_student_id) + на которые копируется Учительский Плейлист + """ + studentInSubgroupIds: [ID!]! + + """ + исключать ли изменение СЗ Персональных планов при изменении СЗ Плана на Класс + """ + excludePersonalPlansFromChangingClassPlan: Boolean + ): TaskSet! + + """ + Создать Учительский Плейлист, скопировав другой Плейлист (Базовый или Учительский) + """ + createTeacherTaskSetFromAnotherTaskSet( + """Идентификатор плейлиста, который копируется""" + taskSetId: ID! + + """тип Плейлиста, который копируется (Учительский или Базовый)""" + taskSetType: PlaylistType! + ): TaskSet! + + """""" + createTeacherTaskSetFromAnotherTaskSetV2( + """Идентификатор плейлиста, который копируется""" + taskSetId: ID! + + """тип Плейлиста, который копируется (Учительский или Базовый)""" + taskSetType: PlaylistType! + ): TaskSet! + + """Создает Контрольную Работу для Учебного Модуля""" + createControlWorkForModule( + """Идентификатор Учебного Модуля (goals.goal_id)""" + moduleId: ID! + ): ClassSubjectControlWork! + + """Добавить Вариант в Контрольную Работу Группы по Предмету""" + addVariantToControlWork( + """ + идентификатор Контрольной Работы (stage_subject_group_control_works.stage_subject_control_work_id) + """ + classSubjectControlWorkId: ID! + + """идентификаторы Заданий, добавляемых к варианту""" + taskIds: [ID!]! + ): ClassSubjectControlWork! + + """Удалить вариант из Контрольной Работы Группы по Предмету""" + removeControlWorkVariant( + """ + идентификатор Варианта Контрольной Работы (stage_subject_group_control_work_variants.stage_subject_group_control_work_variant_id) + """ + classSubjectControlWorkVariantId: ID! + + """ + флаг - проверять ли удаление варианта контрольной работы на аффект учеников + """ + isNeedToCheckAffecting: Boolean! + ): ControlWorkVariantRemoveResult! + + """Назначить Варианты Контрольной Работы Группы по Предмету на Студентов""" + assignControlWorkToStudentsInSubgroup( + """ + идентифкатор Контрольной Работы на Группу по Предмету (stage_subject_group_control_works.stage_subject_group_control_work_id) + """ + classSubjectControlWorkId: ID! + + """распределение Варианта""" + variantsToStudents: [AssignVariantToStudentRequest!]! + ): [PersonalControlWork!]! + + """ + Сбросить все назначения Варинтов Контрольной Работы на Группу по Предмету + """ + resetControlWorkAssignments( + """ + идентификатор Контрольной Работы на Группу по Предмету (stage_subject_group_control_works.stage_subject_control_work_id) + """ + classSubjectControlWorkId: ID! + ): ClassSubjectControlWork! + + """ + Устанавливает дату и время запланированного начала Контрольной Работы для Группы по Предмету + """ + setControlWorkPlanTime( + """ + идентификатор Контрольной Работы на Группу по Предмету (stage_subject_group_control_works.stage_subject_control_work_id) + """ + classSubjectControlWorkId: ID! + + """ + дата и время запланированного начала Контрольной Работы (ПЕРЕДАВАТЬ В UTC!!!!) + """ + planTime: DateTime! + ): ClassSubjectControlWork! + + """ + Устанавливает продолжительность в минутах Контрольной Работы для Группы по Предмету + """ + setControlWorkDuration( + """ + идентификатор Контрольной Работы на Группу по Предмету (stage_subject_group_control_works.stage_subject_control_work_id) + """ + classSubjectControlWorkId: ID! + + """дата и время начала Контрольной Работы (ПЕРЕДАВАТЬ В UTC!!!!)""" + duration: Int! + ): ClassSubjectControlWork! + + """Устанавливает флаг видимости Контрольной Работы для Группы по Предмету""" + setControlWorkVisibleFlag( + """ + идентификатор Контрольной Работы на Группу по Предмету (stage_subject_group_control_works.stage_subject_control_work_id) + """ + classSubjectControlWorkId: ID! + + """дата и время начала Контрольной Работы (ПЕРЕДАВАТЬ В UTC!!!!)""" + visible: Boolean! + ): ClassSubjectControlWork! + + """Удаляет Контрольную работу для Группы по Предмету""" + removeControlWork( + """ + идентификатор Контрольной Работы на Группу по Предмету (stage_subject_group_control_works.stage_subject_control_work_id) + """ + classSubjectControlWorkId: ID! + ): ClassSubjectControlWork! + + """ + Копирует Контрольную работу для Группы по Предмету. Возвращает копию Контрольной Работы + """ + copyControlWork( + """ + идентификатор Контрольной Работы на Группу по Предмету (stage_subject_group_control_works.stage_subject_control_work_id) + """ + classSubjectControlWorkId: ID! + ): ClassSubjectControlWork! + + """Изменяет статус Контрольной работы для Группы по Предмету.""" + changeControlWorkStatus( + """ + идентификатор Контрольной Работы на Группу по Предмету (stage_subject_group_control_works.stage_subject_control_work_id) + """ + classSubjectControlWorkId: ID! + + """новый статус Контрольной Работы""" + newStatus: ControlWorkStatus! + ): ClassSubjectControlWork! + + """Поставить оценку за Контрольную Работу""" + setPersonalControlWorkMark( + """ + идентификатор Персональной Контрольной Работы + (personal_control_works.personal_control_work_id) + """ + personalControlWorkId: ID! + + """ + идентификатор Оценки + (government_marks.government_mark_id) + """ + markId: ID! + ): PersonalControlWork! + + """""" + addCookies(userId: UUID!, cookies: Int!): Int! + + """Назначить Набор Заданий на Студента""" + assignTaskSetToStudent(request: AssignTaskSetToStudentRequest!): AssignTaskSetToStudentResponse! + + """Изменить трудоемкость и даты Учебного Модуля Студента""" + changeStudentModuleLaboriousnessAndDates(request: ChangeStudentModuleLaboriousnessAndDatesRequest): ChangeStudentModuleLaboriousnessAndDatesResponse! + + """Изменить необходимый Уровень для достижения Учебного Модуля""" + changeStudentModuleGoalLevelForAchieve(request: ChangeStudentModuleGoalLevelForAchieveRequest!): ChangeStudentModuleGoalLevelForAchieveResponse! + + """Изменить Слот Набора Заданий""" + changeTaskSetSlot(request: ChangeTaskSetSlotRequest!): ChangeTaskSetSlotResponse! + + """Изменить несколько Слотов Набора Заданий""" + changeTaskSetSlots(request: ChangeTaskSetSlotsRequest!): ChangeTaskSetSlotsResponse! + + """""" + changeTaskSetSlotsV2(request: ChangeTaskSetSlotsRequest!): ChangeTaskSetSlotsResponse! + + """Создать Слот Набора Заданий""" + createTaskSetSlot(request: CreateTaskSetSlotRequest!): CreateTaskSetSlotResponse! @deprecated(reason: "Will be deleted in 0.15.0") + + """Изменить имя Набора Заданий""" + changeTaskSetName(taskSetId: ID!, taskSetType: PlaylistType!, newName: String!): TaskSet! + + """Создать внешнюю работу""" + createExternalWork(externalWorkInput: ExternalWorkInput!): StudentInSubgroup! + + """Создать и тиражировать внешнюю работу на всех учеников в классе""" + createExternalWorkForClassSubject(classSubjectId: ID!, studyPeriodId: ID!, name: String!): [StudentStageSubjectStudyPeriod]! + + """Удалить внешнюю работу""" + removeExternalWork(externalWorkId: ID!): StudentInSubgroup! + + """Добавить файл во внешнюю работу""" + attachExternalWorkFile(externalWorkId: ID!, fileInput: FileInput!): ExternalWork! + + """Удалить файл из внешней работы""" + removeExternalWorkFile(fileId: ID!): ID! + + """Переименовать внешнюю работу""" + changeExternalWorkName(externalWorkId: ID!, externalWorkName: String!): ExternalWork! + + """Установить оценку за модуль""" + setStudentModuleMark(studentId: ID!, moduleId: ID!, markId: ID): StudentModule! + + """Установить оценку за внешнюю работу""" + setExternalWorkMark(externalWorkId: ID!, percentageMark: Float, markId: ID): StudentInSubgroup! + + """Установить оценку за убеный период""" + setStudentStageSubjectStudyPeriodMark(studentId: ID!, stageSubjectId: ID!, studyPeriodId: ID!, markId: ID): StudentInSubgroup! + + """Установить годовую оценку""" + setStudentYearMark(studentId: ID!, classSubjectId: ID!, markId: ID): StudentInSubgroup! + + """Отметить версию плана на класс просмотренной""" + markClassPlanVersionAsViewed(classPlanVersionId: ID!): Boolean! + + """Отметить версию персонального плана просмотренной""" + markPersonalPlanVersionAsViewed(personalPlanVersionId: ID!): Boolean! + + """ + Пометить уведомления учителя как прочитанные в рамках задания и ученика + """ + markNotificationsAsRead( + """ + Идентификатор ученика по которому нужно отметить все уведомления в рамках задания прочитанными + """ + studentId: ID! + + """ + Идентификатор задания по которому необходимо отметить все уведомления как прочитанные в рамках ученика + """ + taskId: ID! + ): [Notification!]! + + """Обновление оценок по критериям""" + updateStudentTaskCriteriaAssessments(studentTaskId: ID!, criteriaEvaluations: [EvaluatedTaskCriterionInput!]!): [EvaluatedTaskCriterion!]! + + """Удаление плана урока""" + deleteLessonPlanById(lessonPlanId: ID!): Boolean + + """Сохранение плана урока""" + saveLessonPlan(lessonPlanInput: LessonPlanInput!): LessonPlan! + + """Сохранение списка планов модуля""" + saveLessonPlanList(lessonPlanInput: [LessonPlanInput!]!): [LessonPlan!]! + + """Копирование модуля, возвращает скопированный модуль""" + copyModule( + """Идентификатор оригинала""" + moduleId: ID! + ): StudyModule! @deprecated(reason: "Под удаление. Использовать новую схему content.graphqls, метод copyModule") + + """Изменение статуса конкурса""" + startCheckStudentTask(studentTaskId: ID!): StudentTask! + + """""" + stopCheckStudentTask(studentTaskId: ID!): StudentTask! + + """Создать рекомендацию к поурочному планированию""" + createLessonPlanRecommendation(moduleId: ID!, lessonPlanRecommendation: LessonPlanRecommendationInput!): LessonPlanRecommendation! + + """добавить итоговую оценку в электронный журнал""" + addJournalFinalStudentMark( + """идентификатор группы по предмету""" + stageSubjectGroupId: ID! + + """идентификатор ученика которому выставляется оценка""" + studentId: UUID! + + """идентификатор учебного периода за который выставляется оценка""" + studyPeriodId: ID + + """идентификатор учебного года за который выставляется оценка""" + academicYearId: ID + + """идентификатор оценки (government_marks.government_mark_id)""" + markId: ID + + """комментарий к оценке""" + comment: String + ): JournalFinalStudentMark! + + """добавить итоговую оценку в электронный журнал""" + addJournalFinalStudentMarkV4( + """идентификатор группы по предмету""" + stageSubjectGroupId: ID! + + """идентификатор ученика которому выставляется оценка""" + studentId: UUID! + + """идентификатор учебного периода за который выставляется оценка""" + studyPeriodId: ID + + """идентификатор учебного года за который выставляется оценка""" + academicYearId: ID + + """идентификатор оценки (government_marks.government_mark_id)""" + markId: ID + + """комментарий к оценке""" + comment: String + ): UpdatedJournalFinalStudentMark! + + """""" + saveJournalFinalStudentMark( + """идентификатор группы по предмету""" + stageSubjectGroupId: ID! + + """идентификатор ученика которому выставляется оценка""" + studentId: UUID! + + """идентификатор учебного периода за который выставляется оценка""" + studyPeriodId: ID + + """идентификатор учебного года за который выставляется оценка""" + academicYearId: ID + + """идентификатор оценки (government_marks.government_mark_id)""" + markId: ID + + """комментарий к оценке""" + comment: String + ): SaveJournalFinalStudentMark! + + """""" + addLessonLearningActivity(lessonId: ID!, learningActivityId: ID!): LessonLearningActivity + + """""" + addJournalStudentMark(lessonLearningActivityId: ID!, studentId: ID!, markId: ID, studyPeriodId: ID, needMark: Boolean, comment: String): JournalStudentMark! + + """""" + saveJournalStudentMark(lessonLearningActivityId: ID!, studentId: ID!, markId: ID, studyPeriodId: ID, needMark: Boolean, comment: String): SaveJournalStudentMarkResponse! + + """ + Удаляет активность на уроке, привязанные к ней оценки + выполняет пересчет средних оценок в уч. периоде по всем затронутим ученикам, если были удалены активные оценки + проверка если к активности привязаны активные оценки выполнение метода прерывается если skipCheck != true + """ + removeLessonLearningActivity( + """идентификатор активности на уроке""" + lessonLearningActivityId: ID! + + """флаг отвечает за пропуск проверки активных оценок""" + skipCheck: Boolean + ): RemoveLessonLearningActivityRespose! + + """ + Заменяет активность на уроке, привязанные к ней оценки + выполняет пересчет средних оценок в уч. периоде по всем затронутым ученикам + проверка если к активности привязаны активные оценки выполнение метода прерывается если skipCheck != true + """ + changeLessonLearningActivity( + """идентификатор активности на уроке""" + lessonLearningActivityId: ID! + + """идентификатор активности""" + learningActivityId: ID! + + """флаг отвечает за пропуск проверки активных оценок""" + skipCheck: Boolean + ): ChangeLessonLearningActivityResult! + + """Изменение учителем статуса задания с типом контента дженерик""" + changeStudentGenericTaskStatus( + """Ид задания студента которому меняем статус""" + studentTaskId: ID! + + """Опциональная оценка задания""" + governmentMarkId: Int + + """Статус, в который необходимо перевести задание""" + taskStatus: TaskStatusEnum! + + """Критерии оценивания""" + criteriaEvaluations: [EvaluatedTaskCriterionInput!]! + ): StudentTaskInfo! + + """Изменение учителем статусов заданий с типом контента дженерик""" + changeStudentGenericTaskStatuses(request: ChangeStudentTaskStatusesRequest!): ChangeStudentTaskStatusesResponse! + + """Изменение учителем статуса заявки на вступление в класс""" + updateStageGroupStudentRequest(requestId: ID!, status: StageGroupStudentRequestStatus!): StageGroupStudentRequest! + + """Сохраняет комментарий учителя к уроку в журнале для ученика""" + saveJournalStudentComment( + """Идентификатор урока""" + lessonId: ID! + + """Идентификатор ученика""" + studentId: UUID! + + """Комментарий учителя к уроку для ученика""" + comment: String! + ): JournalStudentComment! + + """Создание заметок""" + addOrUpdateNotes( + """Входящая модель данных для добавления или апдейта заметки""" + noteInputModels: [NoteInput!]! + ): Int + + """Создание заметок""" + deleteNotesByIds( + """Массив с идентификатором для удаления заметок""" + noteIds: [ID!]! + ): [Note!]! + + """Создание заметок""" + updateCompleteness( + """""" + noteId: ID! + + """Обновление поля completed""" + isCompleted: Boolean! + ): [Note]! + + """Сохранение плана урока""" + saveLessonPlanV4(lessonPlanInput: LessonPlanV4Input!): LessonPlanV4! + + """Удаление плана урока""" + deleteLessonPlan(lessonPlanId: ID!): Boolean + + """Перенос плана урока в архив""" + addLessonPlanToArchive(lessonPlanId: ID!): Boolean + + """Извлечение плана урока из архива""" + getLessonPlanFromArchive(lessonPlanId: ID!): Boolean + + """Удаление архивных планов урока учителя""" + deleteArchivedLessonPlans: Boolean + + """Расшарить план урока""" + shareLessonPlan(lessonPlaId: ID!): Boolean + + """Отключить шару плана урока""" + unshareLessonPlan(lessonPlanId: ID!): Boolean + + """Опубликовать план урока""" + publishLessonPlan(lessonPlanInput: LessonPlanV4Input!): LessonPlanPublishingResult! + + """Снять с публикации плана урока""" + unpublishLessonPlan(lessonPlanId: ID!): Boolean + + """Установить соответствие критерию""" + setTaskCriteriaValue( + """Идентификатор критерия""" + criteriaId: ID! + + """Идентификатор ученика""" + studentId: ID! + + """Значение соответствия""" + criteriaValue: CriteriaValue! + ): StudentCriteriaValue! @deprecated + + """Подтвердить соответствие критериям""" + setTaskCriteriaValueConfirm( + """Идентификатор задания""" + taskId: ID! + + """Идентификатор ученика""" + studentId: ID! + ): Boolean! @deprecated + + """""" + setTaskCriteriaConformity(studentCriteriaValueWrappers: [StudentCriteriaValueInput!]): [StudentCriteriaValue!]! + + """""" + setTaskCriteriaConformityForStudentTasks(studentCriteriaValueWrappers: [StudentCriteriaValueInput!]!): [SetTaskCriteriaConformityForStudentTasksResponse!]! + + """""" + saveOrUpdatePortfolioDocument(portfolioDocumentId: UUID, categoryCode: String!, typeCode: String!, documentDate: Date!, documentName: String!, fields: [PortfolioDocumentFieldsInput!]!, files: [PortfolioDocumentFileInput!]): PortfolioDocument + + """""" + deletePortfolioDocuments(portfolioDocumentIds: [UUID]!): Boolean! + + """""" + createWebinarRuWebinar(lessonPlanId: ID!, roomTitle: String!, lessonId: ID, timeZone: String): String! + + """""" + addBadge(studentId: UUID!, badgeId: ID!): Boolean + + """Выдать награду ученику""" + addAward(studentId: UUID!, awardId: ID!): UserAward! +} + +"""Обзор обучения учителей 'Персонализированное образование'""" +type TeacherPersonalTraining { + """""" + scanDateTime: DateTime + + """""" + items: [TeacherPersonalTrainingItem!]! +} + +""" +Обзор обучения учителей 'Персонализированное образование' детальный +userRole: 0-PG_Configurator, 1-Configurator, 2-Teacher +""" +type TeacherPersonalTrainingDetailed { + """""" + userRole: Int! + + """""" + scanDateTime: DateTime + + """""" + items: [TeacherPersonalTrainingDetailedItem!]! +} + +"""""" +type TeacherPersonalTrainingDetailedItem { + """""" + region: String! + + """""" + schoolName: String! + + """""" + identifier: String! + + """""" + login: String + + """""" + fio: String + + """""" + email: String + + """""" + phoneNumber: String + + """""" + completedPersonalEducationLevel3: Boolean! + + """""" + completedPersonalEducationLevel4: Boolean! + + """""" + completedPersonalEducation: Boolean! + + """""" + completedTrainingModuleLevel3: Boolean! + + """""" + completedTrainingModuleLevel4: Boolean! + + """""" + completedTrainingModule: Boolean! + + """""" + completedGoalsAndGradingLevel3: Boolean! + + """""" + completedGoalsAndGradingLevel4: Boolean! + + """""" + completedGoalsAndGrading: Boolean! + + """""" + completedCultureOfPersonalEducationLevel3: Boolean + + """""" + completedCultureOfPersonalEducationLevel4: Boolean + + """""" + completedCultureOfPersonalEducation: Boolean + + """""" + completedPersonalPotentialLevel3: Boolean + + """""" + completedPersonalPotentialLevel4: Boolean + + """""" + completedPersonalPotential: Boolean +} + +"""""" +type TeacherPersonalTrainingItem { + """""" + region: String! + + """""" + schoolName: String! + + """""" + identifier: String! + + """""" + activeConfiguratorsCount: Int! + + """""" + configuratorsCount: Int! + + """""" + activeTeachersCount: Int! + + """""" + teachersCount: Int! + + """""" + studentsInPG: Int! + + """""" + completedPersonalEducation: Int! + + """""" + completedModule2TrainingModule: Int! + + """""" + completedModule3GoalsAndGrading: Int! + + """""" + completedModule4CultureOfPersonalEducation: Int + + """""" + completedModule5PersonalPotential: Int +} + +"""Информация об учителе для публичных профилей""" +type TeacherPublicData { + """""" + id: ID! + + """""" + firstName: String! + + """""" + middleName: String + + """""" + lastName: String! + + """""" + avatarUrl: String + + """""" + subject: Subject + + """""" + subjects: [Subject] +} + +"""Публичный профиль учителя""" +type TeacherPublicProfile { + """""" + id: ID! + + """""" + firstName: String! + + """""" + middleName: String + + """""" + lastName: String! + + """""" + avatarUrl: String + + """""" + login: String! + + """""" + email: String + + """""" + birthdayDate: Date + + """""" + mobilePhone: String + + """""" + aboutMePersonalInfo: String + + """""" + stageGroupName: String! + + """""" + stageGroupNameList: [String!]! + + """классы, в которых он классный руководитель""" + formMasterStageGroups: [String!]! + + """""" + subjects: [SubjectData!]! + + """""" + classroomIds: [ID!]! + + """""" + showBirthYear: Boolean + + """""" + showContacts: Boolean +} + +"""""" +type TeacherQueries { + """ + Возвращает список регионов, в которых пользователь назначен как проверяющий учитель + (фроль Учитель для внешних школ) с сортировкой + """ + getMyRegionsByTeacherTraining( + """Массив идентификаторов Студентов""" + studentIds: [UUID!]! + + """Индентификаторы школ""" + schoolIds: [UUID!]! + ): GetMyRegionsByTeacherTrainingResponse! + + """ + Возвращает список школ, в которых пользователь назначен проверяющим учителем + (фроль Учитель для внешних школ) с сортировкой + """ + getMySchoolsByTeacherTraining( + """Массив идентификаторов Студентов""" + studentIds: [UUID!]! + + """Индентификаторы регионов""" + regionIds: [UUID!]! + + """ + Фильтр по ID учебных годов; если пустой, то поиск по всем учебным годам + """ + filterAcademyYears: [ID!]! + + """Тип обучения""" + learningType: LearningTypeEnum! + ): GetMySchoolsByTeacherTrainingResponse! @deprecated(reason: "Под удаление. Использовать getMySchoolsByTeacherTrainingWithEnumType") + + """""" + getMySchoolsByTeacherTrainingWithEnumType( + """Массив идентификаторов Студентов""" + studentIds: [UUID!]! + + """Индентификаторы регионов""" + regionIds: [UUID!]! + + """ + Фильтр по ID учебных годов; если пустой, то поиск по всем учебным годам + """ + filterAcademyYears: [ID!]! + + """Тип обучения""" + learningTypes: [LearningTypeEnum!]! + ): GetMySchoolsByTeacherTrainingResponse! + + """Возвращает все текущие Группы по Предмету Учителя""" + getClassSubjects: [ClassSubject!]! + + """""" + getClassSubjectsByClassName(className: String, offset: Int!, limit: Int!): [ClassSubject!]! + + """ + Возвращает Группы по Предмету Учителя с лимитами Групп в срезе каждого предмета + """ + getClassSubjectsBySubject(subjectId: ID, offset: Int!, limit: Int!): [ClassSubject!]! + + """ + Возвращает все Группы по Предмету Учителя (stage_subject_groups) по идентификатору академического года (academic_years.academic_year_id) + """ + getClassSubjectsByAcademicYearId(academicYearId: ID!): [ClassSubject!]! + + """ + выдает список академических лет школы. Если не передать schoolId, выдаст по текущей + """ + getAcademicYears(schoolId: ID): [AcademicYear!]! + + """ + Возвращает Классы по Предмету Учителя по массиву идентификаторов (stage_subject_groups.stage_subject_group_id) + """ + getClassSubjectsByIds(classSubjectIds: [ID!]!): [ClassSubject!]! + + """ + Возвращает развернутую информацию о предмете класса, его модулях и количестве заданий в их плейлистах + (в методе getClassSubjectsByIds считается общее количество заданий, не по плейлисту) + """ + getClassSubjectsExtendedInfo(classSubjectIds: [ID!]!): [ClassSubject!]! + + """ + Возвращает Классы по Предмету Учителя по массиву идентификаторов (stage_subject_groups.stage_subject_group_id) + Предсборка StudyModules, только для страницы Плана в V3 + """ + getClassSubjectsByIdsWithLevels(classSubjectIds: [ID!]!): [ClassSubject!]! + + """ + Возвращает классы, для которых учитель является ведущим по заданным классам + """ + checkTeacherLeadRoleByClassSubjectIDs(classSubjectIds: [ID!]!): [ID!]! + + """ + Возвращает идентификатор Группы по идентификатору ученика и идентификатору задания (tasks) или null если его нет + """ + getClassSubjectIdByStudentIdAndTaskId(studentId: UUID!, taskId: ID!): ID + + """ + Возвращает Классы по Предмету Учителя по фильтрам + Включает только активные Группы; классное руководство не включается + Отсортированы по имени предмета, затем по параллели, затем по имени группы + """ + getClassSubjectsByFilters( + """Фильтр по ID предметов; если пустой, то поиск по всем предметам""" + filterSubjects: [ID!]! + + """Фильтр по ID параллелей; если пустой, то поиск по всем параллелям""" + filterStages: [ID!]! + + """ + Идентификаторы Групп по предмету (stage_subject_groups.stage_subject_group_id), + если массив пустой считается, что запрос по любому классу + """ + stageSubjectGroupIds: [ID!] + + """ + Фильтр по ID учебных годов; если пустой, то поиск по всем учебным годам + """ + filterAcademyYears: [ID!]! + + """ + Фильтр по имени группы по предмету ("5А-Физика" / "Фиолетовые незабудки") + """ + classSubjectTitleTextSearch: String + + """Фильтр по краткому наименованию школы""" + schoolINameTitleTextSearch: String + + """Идентификаторы регионов""" + regionIds: [UUID!] + + """Идентификаторы школ""" + schoolIds: [ID!] + + """Тип обучения""" + learningTypes: [LearningTypeEnum!] + + """ + добавить в ответ группы по предмету в которых учитель - классный руководитель + """ + includeFormMasterGroup: Boolean + + """ + исключает из ответа группы по предмету в которых учитель консультирующий + """ + excludeConsulting: Boolean + + """Параметры пагинации""" + page: PagingInput + ): GetClassSubjectsByFiltersResponse! + + """""" + getClassPlansByFilters(subjectId: ID!, stageIds: [ID!]!, academicYearIds: [ID!]!, planStatuses: [PlanStatusEnum!], searchName: String): GetClassSubjectsByFiltersResponse! + + """ + Аналог вызова getClassSubjectsByFilters. + Добавлено заполнение типов currentPeriodPerformance и currentModulePerformance. + """ + getClassSubjectsWithPerformanceByFilters( + """Фильтр по ID предметов; если пустой, то поиск по всем предметам""" + filterSubjects: [ID!]! + + """Фильтр по ID параллелей; если пустой, то поиск по всем параллелям""" + filterStages: [ID!]! + + """ + Идентификаторы Групп по предмету (stage_subject_groups.stage_subject_group_id), + если массив пустой считается, что запрос по любому классу + """ + stageSubjectGroupIds: [ID!] + + """ + Фильтр по ID учебных годов; если пустой, то поиск по всем учебным годам + """ + filterAcademyYears: [ID!]! + + """ + Фильтр по имени группы по предмету ("5А-Физика" / "Фиолетовые незабудки") + """ + classSubjectTitleTextSearch: String + + """Фильтр по краткому наименованию школы""" + schoolINameTitleTextSearch: String + + """Идентификаторы регионов""" + regionIds: [UUID!] + + """Идентификаторы школ""" + schoolIds: [ID!] + + """Тип обучения""" + learningTypes: [LearningTypeEnum!] + + """ + добавить в ответ группы по предмету в которых учитель - классный руководитель + """ + includeFormMasterGroup: Boolean + + """ + исключает из ответа группы по предмету в которых учитель консультирующий + """ + excludeConsulting: Boolean + + """Параметры пагинации""" + page: PagingInput + ): GetClassSubjectsByFiltersResponse! + + """ + статистика по прохождению заданий по каждому модулю из плана на класс (только для учеников, занимающихся по общему плану) + """ + getClassSubjectPerformanceByModules( + """ID группы по предмету""" + stageSubjectGroupId: ID! + ): [StudentTaskStatusGroup!]! + + """""" + getClassSubjectsByTeacherTraining( + """ + Идентификаторы Групп по предмету (stage_subject_groups.stage_subject_group_id), + если массив пустой считается, что запрос по любому классу + """ + stageSubjectGroupIds: [ID!]! + + """Идентификаторы регионов""" + regionIds: [UUID!]! + + """Идентификаторы школ""" + schoolIds: [ID!]! + + """ + Фильтр по ID учебных годов; если пустой, то поиск по всем учебным годам + """ + filterAcademyYears: [ID!]! + + """Тип обучения""" + learningType: LearningTypeEnum! + + """ + Идентификаторы предметов (subjects.subject_id), если массив пустой считается, что запрос по любому предмету + """ + subjectIds: [ID!]! + + """Фильтр по краткому наименованию школы""" + schoolINameTitleTextSearch: String + + """ + Фильтр по имени группы по предмету ("5А-Физика" / "Фиолетовые незабудки") + """ + classSubjectTitleTextSearch: String + + """Параметры пагинации""" + paging: PagingInput + ): [ClassSubject!]! @deprecated(reason: "Под удаление. Использовать getClassSubjectsByTeacherTrainingWithEnumType") + + """""" + getClassSubjectsByTeacherTrainingWithEnumType( + """ + Идентификаторы Групп по предмету (stage_subject_groups.stage_subject_group_id), + если массив пустой считается, что запрос по любому классу + """ + stageSubjectGroupIds: [ID!]! + + """Идентификаторы регионов""" + regionIds: [UUID!]! + + """Идентификаторы школ""" + schoolIds: [ID!]! + + """ + Фильтр по ID учебных годов; если пустой, то поиск по всем учебным годам + """ + filterAcademyYears: [ID!]! + + """Тип обучения""" + learningTypes: [LearningTypeEnum!]! + + """ + Идентификаторы предметов (subjects.subject_id), если массив пустой считается, что запрос по любому предмету + """ + subjectIds: [ID!]! + + """Фильтр по краткому наименованию школы""" + schoolINameTitleTextSearch: String + + """ + Фильтр по имени группы по предмету ("5А-Физика" / "Фиолетовые незабудки") + """ + classSubjectTitleTextSearch: String + + """Параметры пагинации""" + paging: PagingInput + ): [ClassSubject!]! @deprecated(reason: "Под удаление. Использовать getClassSubjectsByFilters") + + """ + Возвращает Студентов В Подгруппе с информацией об успеваемости в рамках конкретного Класса по Предмету + по Идентификатору (stage_subject_subgroup_students.stage_subject_subgroup_student_id) + """ + getStudentsInSubgroupByIds(studentsInSubgroupIds: [ID!]!): [StudentInSubgroup!]! + + """ + Возвращает Студента В Подгруппе с информацией об успеваемости в рамках конкретного Класса по Предмету + по Идентификатору (stage_subject_subgroup_students.stage_subject_subgroup_student_id) + ВНИМАНИЕ!!! Возвращаемый набор данных захардкожен на бэкенде, + при расгирении возвращаемого набора данных необходима доработка на бэке. + """ + getStudentsInSubgroupGrid(studentsInSubgroupId: ID!): StudentInSubgroup! + + """ + Возвращает Студента В Подгруппе с детализацией в рамках конкретного Класса по Предмету + по Идентификатору (stage_subject_subgroup_students.stage_subject_subgroup_student_id) + """ + getStudentInSubgroupWithPersonalizedPlan(studentInSubgroupId: ID!): StudentInSubgroup! + + """ + Возвращает Задания, которые Учитель должен проверить + ВНИМАНИЕ!!! Возвращаемый набор данных захардкожен на бэкенде, + при расгирении возвращаемого набора данных необходима доработка на бэке. + """ + getTodos(offset: Int!, limit: Int!): [Todo!]! + + """""" + getNotifications(paging: PagingInput, wasReadIncluded: Boolean): [Notification!]! + + """""" + getNotificationsByTypes( + """""" + typeIds: [ID!]! + + """""" + paging: PagingInput + + """""" + wasReadIncluded: Boolean + + """ + Необязательное поле, при передаче true вернет уведомления только за текущий учебный год + """ + includeOnlyCurrentYearNotifications: Boolean + ): [Notification!]! + + """""" + getNotificationsCount(wasReadIncluded: Boolean): Int! + + """""" + getSchedule(from: DateTime!, to: DateTime!): Schedule! + + """Расписание группы по предмету за период""" + getScheduleByStageSubjectGroup(from: DateTime!, to: DateTime!, stageSubjectGroupId: ID!): Schedule! + + """Возвращает детальный вид расписания""" + getTeacherSchedule( + """Начало периода""" + from: DateTime! + + """Конец периода""" + to: DateTime! + ): Schedule! + + """ + Возвращает последнее непрочитанное уведомление об изменении расписания. Или null если таковых нет + """ + getChangeScheduleNotification: Notification + + """""" + getLessonsForWeek(classSubjectId: ID!, weekStart: DateTime!): [Lesson!]! + + """""" + getStudentProfile(studentId: ID!): Student! + + """""" + getTasksByIds(ids: [ID!]!, studentId: ID): [StudentTask] + + """Получить фидбек ученика по опредлённому заданию или null если его нет""" + getStudentFeedback(studentId: UUID!, taskId: ID!): Feedback + + """ + Возвращает комментарии, которые оставляли пользователи под выполняемым учеником заданием. + """ + getTaskMessages( + """идентификатор задания (tasks.task_id)""" + taskId: ID! + + """ + идентификатор студента, который выполняет это Задания (students.student_id) + """ + studentId: UUID! + ): [TaskMessage!]! + + """ + Возвращает количество непрочитанных текущим пользователем комментариев по заданию. Комментарии пользователя не учитываются + """ + getCountUnreadMessages(taskId: ID!, studentId: UUID!): Int! + + """Возвращает список отправленных ответов ученика по заданию""" + getTaskAnswers(taskId: ID!, studentId: UUID!): [StudentAnswer!]! + + """""" + getPersonalTrajectory(taskId: ID, goalId: ID, studentId: ID!): PersonalTrajectory! + + """Получение списка траекторий""" + getTrajectories: [String!] + + """Возвращает список навыков""" + getSoftSkillTypes( + """Фильтр навыков: null - все, false - активные, true - архивные""" + isArchive: Boolean + + """Параметры сортировки""" + sortingFields: [SortingField] + ): [SoftSkillType!]! + + """Возвращает список навыков""" + getSoftSkillTypesV2( + """Фильтр навыков: null - все, false - активные, true - архивные""" + isArchive: Boolean + + """ + Идентификатор задания, для которого возвращается набор доступных навыков по тенанту + """ + taskId: ID + + """Параметры сортировки""" + sortingFields: [SortingField] + ): [SoftSkillType!]! + + """""" + getStages(isSchool21: Boolean): [Stage!]! + + """""" + getLicenses: [License!]! @deprecated + + """""" + getModulesByBookId(bookId: ID!): [StudyModule!]! + + """""" + getModulesByIds(ids: [ID!]): [StudyModule!]! + + """""" + getModulesByIdsV2(ids: [ID!]): [StudyModule!]! + + """Получение учебного модуля по его идентификатору""" + getExamModuleById(goalId: ID!): ExamModule! + + """""" + getMotivationBlockByGoalId(id: ID!): MotivationBlock + + """""" + getMotivationBlockSections(id: ID!): [MotivationBlockSection!]! + + """""" + getStudyModulesList: [StudyModule!]! + + """""" + getGoalConsistencyInfo(goalId: ID!): GoalConsistency! + + """""" + getTaskConsistencyInfo(taskId: ID!): TaskInModuleConsistency! + + """""" + getTasksConsistencyInfo(taskIds: [ID!]!): [TaskInModuleConsistency!]! + + """""" + getTaskMeta(taskId: ID!): Task! + + """""" + getAllExistedTasksQuantity( + """""" + filterSubjects: [ID] + + """""" + filterStages: [ID] + + """""" + filterGoalLevelValues: [String] + + """""" + filterLaboriousnessFrom: Int + + """""" + filterLaboriousnessTo: Int + + """""" + filterNoParent: Boolean + + """""" + filterTaskTypes: [TaskTypeEnum!] + + """""" + filterSoftSkillTypes: [ID] + + """""" + filterLicense: [ID] + + """По умолчанию доступные учителю""" + filterAccess: Boolean + + """Список тегов""" + tags: [String] + + """""" + textSearch: String + + """мои параллели и модули""" + myStagesAndModules: Boolean + + """фильтр по признаку архивности""" + archived: Boolean + + """Созданные мной задания""" + myCreatedTasks: Boolean + + """Фильтр по скоупам""" + filterScopes: [ScopeEnum] + + """Флаг, содержится ли задание в каком либо модуле (Ш21)""" + isInModule: Boolean + ): Int! + + """""" + getAllowedTaskTypesByLevel(level: Float!): [TaskTypeEnum!]! + + """ + Возвращает Учебные периоды конкретной параллели в этом году в конкретной Школе + """ + getCurrentStudyPeriodsByStage(stageId: ID!): [StudyPeriod!]! + + """Возвращает список регионов России""" + getAllRegions: [Region!]! @deprecated(reason: "Запрос для получения всех регионов в UserQueries") + + """Возвращает все доступные Планы Учителя по Параллели""" + getTasks( + """""" + sortingFields: [SortingField!]! + + """""" + filterSubjects: [ID!]! + + """""" + filterStages: [ID!]! + + """""" + filterGoalLevelValues: [String!]! + + """""" + filterLaboriousnessFrom: Int + + """""" + filterLaboriousnessTo: Int + + """""" + filterNoParent: Boolean + + """""" + filterTaskTypes: [TaskTypeEnum!]! + + """""" + filterSoftSkillTypes: [ID!]! + + """""" + filterLicense: [ID] + + """По умолчанию доступные учетелю""" + filterAccess: Boolean + + """Список тегов""" + tags: [String!]! + + """""" + textSearch: String + + """""" + paging: PagingInput + + """мои параллели и модули""" + myStagesAndModules: Boolean + + """фильтр по признаку архивности""" + archived: Boolean + + """Созданные мной задания""" + myCreatedTasks: Boolean + + """Фильтр по скоупам""" + filterScopes: [ScopeEnum!]! + + """Фильтр по типу проверки задания""" + taskCheckTypes: [TaskCheckEnum!]! + + """Флаг, содержится ли задание в каком либо модуле (Ш21)""" + isInModule: Boolean + + """Тип организации""" + organizationType: OrganizationType + + """Тип задания""" + taskAssignmentTypes: [TaskAssignmentEnum] + ): [Task!]! + + """""" + getTasksWithCount( + """""" + sortingFields: [SortingField!]! + + """""" + filterSubjects: [ID!]! + + """""" + filterStages: [ID!]! + + """""" + filterGoalLevelValues: [String!]! + + """""" + filterLaboriousnessFrom: Int + + """""" + filterLaboriousnessTo: Int + + """""" + filterNoParent: Boolean + + """""" + filterTaskTypes: [TaskTypeEnum!]! + + """""" + filterSoftSkillTypes: [ID!]! + + """""" + filterLicense: [ID] + + """По умолчанию доступные учетелю""" + filterAccess: Boolean + + """Список тегов""" + tags: [String!]! + + """""" + textSearch: String + + """""" + paging: PagingInput + + """мои параллели и модули""" + myStagesAndModules: Boolean + + """фильтр по признаку архивности""" + archived: Boolean + + """Созданные мной задания""" + myCreatedTasks: Boolean + + """Фильтр по скоупам""" + filterScopes: [ScopeEnum!]! + + """Фильтр по типу проверки задания""" + taskCheckTypes: [TaskCheckEnum!]! + + """Флаг, содержится ли задание в каком либо модуле (Ш21)""" + isInModule: Boolean + + """Тип организации""" + organizationType: OrganizationType + + """Тип задания""" + taskAssignmentTypes: [TaskAssignmentEnum] + + """Ш21. Тип загружаемого решения""" + solutionTypes: [TaskSolutionTypeEnum] + ): TasksWithCount! + + """ + Получение рекомендуемого кол-ва дней на учебный модуь в соотношении (Идентификатор цели, кол-во дне на учебный модуь) + """ + getRecommendedDurationForModules(goalIds: [ID!]!, classSubjectId: ID!): [GoalDurationMap!]! + + """Получение педтехник с сортировкой, полнотекстовым поиском и пагинацией""" + getPedagogicalTechniques(sortingFields: [SortingField!], textSearch: String, paging: PagingInput): [PedagogicalTechnique!]! + + """ + Получение всех плейлистов в рамках модуля(Базовые плейлисты + плейлисты Учителя) + """ + getModuleTaskSets(moduleId: ID!): [TaskSet!]! + + """ + Получение всех доступных плейлистов в рамках модуля + плейлист назначенный на студента + (в случае если учитель ведет предмет у данной группы, но не является создателем плейлиста) + """ + getAvailableModuleTaskSets(moduleId: ID!, studentInSubgroupId: ID!): [TaskSet!]! + + """""" + getAvailableModuleTaskSetsV2(moduleId: ID!, studentInSubgroupId: ID!): [TaskSet!]! + + """количество пед.техник по параметрам""" + countPedagogicalTechniques(textSearch: String): Int! + + """получение типов проектов для планов""" + getExecutionTypes: [ModuleExecutionTypeModel!]! + + """Запрос списка модулей""" + getModules( + """""" + sortingFields: [SortingField] + + """Фильтр по ID предметов""" + filterSubjects: [ID] + + """Фильтр по ID параллелей""" + filterStages: [ID] + + """Фильтр по ID школ, имеющих доступ к модулям""" + filterSchoolIds: [ID] + + """Фильтр по скоупам""" + filterScope: ScopeEnum + + """""" + filterScopes: [ScopeEnum] + + """Фильтры по длительности (от..до)""" + filterLaboriousnessFrom: Int + + """""" + filterLaboriousnessTo: Int + + """Фильтры по дате создания (от..до)""" + filterCreateTimeFrom: String + + """""" + filterCreateTimeTo: String + + """Фильтр по готовности для использования""" + filterReady: Boolean + + """Фильтр по соответствию текущему пользователю""" + filterForCurrentUser: Boolean + + """Фильтр по доступу""" + filterAccess: Boolean + + """Фильтр по импортированности модуля""" + filterImported: Boolean + + """Фильтр по атрибуту архивации""" + filterArchived: Boolean + + """Фильтр по наличию задания в проекте""" + moduleTaskAvailability: ModuleTaskAvailabilityEnum! + + """Фильтр по софт скилам""" + filterSoftSkills: [ID!]! + + """Созданные мной модули""" + filterIsCreatedByCurrentUser: Boolean + + """Тип выполнения экзамена(обыкновенный модуль, модуль для экзамена)""" + filterExecutionType: Int + + """Строка поиска""" + textSearch: String + + """ + Поиск строки поиска только в имени (название и автор). Без учета базовой идеи + """ + nameOnlyTextSearch: Boolean + + """Строка поиска по имени-фамилии-отчеству автора (не меньше 3 символов)""" + authorFIOTextSearch: String + + """Список модулей которые надо исключить из выдачи""" + filterExceptGoals: [ID] + + """Список тегов""" + tags: [String] + + """Параметры пагинации""" + paging: PagingInput + ): GetModulesResponse! + + """""" + getModulesCount( + """Фильтр по ID предметов""" + filterSubjects: [ID] + + """Фильтр по ID параллелей""" + filterStages: [ID] + + """Фильтр по ID школ, имеющих доступ к модулям""" + filterSchoolIds: [ID] + + """Фильтр по скоупу (удалить - использовать filterScopes)""" + filterScope: ScopeEnum + + """Фильтр по скоупам""" + filterScopes: [ScopeEnum] + + """Фильтры по длительности (от..до)""" + filterLaboriousnessFrom: Int + + """""" + filterLaboriousnessTo: Int + + """Фильтры по дате создания (от..до)""" + filterCreateTimeFrom: String + + """""" + filterCreateTimeTo: String + + """Фильтр по готовности для использования""" + filterReady: Boolean + + """Фильтр по соответствию текущему пользователю""" + filterForCurrentUser: Boolean + + """Фильтр по доступу""" + filterAccess: Boolean + + """Фильтр по импортированности модуля""" + filterImported: Boolean + + """Фильтр по атрибуту архивации""" + filterArchived: Boolean + + """Созданные мной модули""" + filterIsCreatedByCurrentUser: Boolean + + """Тип выполнения экзамена(обыкновенный модуль, модуль для экзамена)""" + filterExecutionType: Int + + """Строка поиска""" + textSearch: String + + """Строка поиска по имени-фамилии-отчеству автора (не меньше 3 символов)""" + authorFIOTextSearch: String + + """Список тегов""" + tags: [String] + ): Int! @deprecated(reason: "Use getModules instead. Will be deleted in 23.0.0") + + """набор оценок, принятых в школе""" + getSchoolMarks: [SchoolMark!]! + + """Запрос пользователей, которым доступен модуль""" + getGoalAvailableUsers( + """ID модуля""" + goalId: ID! + + """Параметры пагинации""" + paging: PagingInput + ): [User!]! + + """Запрос школ, которым доступен модуль""" + getGoalAvailableSchools( + """ID модуля""" + goalId: ID! + + """Параметры пагинации""" + paging: PagingInput + ): [UUID!]! + + """Запрос пользователей, которым доступно задание""" + getTaskAvailableUsers( + """ID задания""" + taskId: ID! + + """Параметры пагинации""" + paging: PagingInput + ): [User!]! + + """Запрос школ, которым доступно задание""" + getTaskAvailableSchools( + """ID задания""" + taskId: ID! + + """Параметры пагинации""" + paging: PagingInput + ): [UUID!]! + + """Запрос количества пользователей, которым доступен модуль""" + countGoalAvailableUsers( + """ID модуля""" + goalId: ID! + + """Строка поиска""" + textSearch: String + ): Int! @deprecated(reason: "Will be deleted in 0.14") + + """Запрос количества школ, которым доступен модуль""" + countGoalAvailableSchools( + """ID модуля""" + goalId: ID! + + """Строка поиска""" + textSearch: String + ): Int! @deprecated(reason: "Will be deleted in 0.14") + + """Запрос количества пользователей, которым доступно задание""" + countTaskAvailableUsers( + """ID задания""" + taskId: ID! + + """Строка поиска""" + textSearch: String + ): Int! @deprecated(reason: "Will be deleted in 0.14") + + """Запрос количества школ, которым доступно задание""" + countTaskAvailableSchools( + """ID задания""" + taskId: ID! + + """Строка поиска""" + textSearch: String + ): Int! @deprecated(reason: "Will be deleted in 0.14") + + """ + Запрос текущего и доступных скоупов модуля для изменения текущим пользователем + """ + getGoalCurrentAndAvailableScopeTypes( + """ID модуля""" + goalId: ID! + ): CurrentAndAvailableScopeTypes! + + """ + Запрос текущего и доступных скоупов заданич для изменения текущим пользователем + """ + getTaskCurrentAndAvailableScopeTypes( + """ID задания""" + taskId: ID! + ): CurrentAndAvailableScopeTypes! + + """""" + getSubgroupsByIds(subgroupIds: [ID!]!): [Subgroup!]! + + """ + Возвращает персонализированный Учебный Модуль Студента + по идентификатору Учебного Модуля (goals.goal_id) + и по идентификатору Студента (students.student_id) + """ + getStudentModule(moduleId: ID!, studentId: UUID): StudentModule! + + """""" + getStudentModuleV2(moduleId: ID!, studentId: UUID): StudentModule! + + """ + Возвращает полную информацию по Учебному Модулю в контексте Студента + по идентификатору Учебного Модуля (goals.goal_id) + и по идентификатору Студента (students.student_id) + """ + getStudentModuleInformation(moduleId: ID!, studentId: UUID): StudentModuleInfo! + + """ + Возвращает полную информацию по Учебному Модулю в контексте Студента + по идентификатору Учебного Модуля (goals.goal_id) + и по идентификатору Студента (students.student_id) + по идентификатору группы по предмету(stage_subject_group.stage_subject_group_id), если модуль добавлен в группу другого предмета + со всеми Плэйлистами, доступными Студенту + """ + getStudentModuleInformationWithAvailablePlaylists(moduleId: ID!, studentId: UUID!, stageSubjectGroupId: ID): StudentModuleInfo! + + """получение списка отправленных ответов ученика""" + getStudentTaskAnswers(taskId: ID!, studentId: UUID!): [StudentAnswer!]! + + """Возвращает Задания в контексте студента по фильтрам""" + getStudentTasks( + """Идентификаторы Студентов (students.student_id)""" + studentIds: [UUID!]! + + """Идентификаторы Учебных Модулей (goals.goal_id)""" + moduleIds: [ID!]! + + """ + Статусы Заданий, по которым фильтруем, если массив пустой считается, что запрос по любому статусу + """ + statuses: [TaskStatusEnum!]! + + """ + Идентификаторы предметов (subjects.subject_id), если массив пустой считается, что запрос по любому предмету + """ + subjectIds: [ID!]! + + """ + Идентификаторы Групп по предмету (stage_subject_groups.stage_subject_group_id), если массив пустой считается, что запрос по любому классу + """ + stageSubjectGroupIds: [ID!]! + + """ + Типы Заданий, по которым фильтруем, если массив пустой считается, что по любому типу + """ + taskTypes: [TaskTypeEnum!]! + + """ + Типы проверки заданий, по которым фильтруем, если массив пустой, то по всем + """ + taskCheckTypes: [TaskCheckEnum!]! + + """ + список кодов заданий (после выбора Предмета, а затем Модуля по предмету) + """ + taskIds: [ID!]! + + """ + список уровней заданий, если массив пустой, считается, что по любому уровню + """ + goalLevelValues: [Float!]! + + """Идентификаторы регионов""" + regionIds: [UUID!]! + + """Идентификаторы Школ""" + schoolIds: [UUID!] + + """начало периода изменения статуса задания""" + statusDateModifiedFrom: Date + + """окончание период изменения статуса задания""" + statusDateModifiedTo: Date + + """начало периода любого изменения задания""" + modifiedFrom: DateTime + + """окончание периода любого изменения задания""" + modifiedTo: DateTime + + """Начало последнего периода пребывания задачи в статусе NEED_CHECK""" + lastNeedCheckStatusDateTimeFrom: DateTime + + """ + Конец последнего периода пребывания задачи в статусе NEED_CHECK (inclusive) + """ + lastNeedCheckStatusDateTimeTo: DateTime + + """строка для поиска по ФИ ученика/названию задания/названию модуля""" + textSearch: String + + """строка поиска по ФИ ученика""" + studentFioTextSearch: String + + """строка поиска по названию группы по предмету; не зависит от регистра""" + stageSubjectGroupTitleTextSearch: String + + """строка поиска по названию задания""" + taskTitleTextSearch: String + + """строка поиска по названию модуля""" + moduleTitleTextSearch: String + + """строка поиска по названию предмета""" + subjectTitleTextSearch: String + + """ + ключи, по которым группировать StudentTask + если группировка не нужна, использовать StudentTaskGroupTypeEnum.NONE + в таком случае все будет сложено в группу "NONE" - ["NONE": [все StudentTask]] + использовать группировку NONE с другими группировками нельзя, будет исключение + сортировка групп происходит в порядке переданных типов, + кроме BY_CLASS - если она присутствует, сортировка всегда сначала по классу - причем сначала по номеру параллели, потом по имени класса, - потом в порядке переданных + """ + groupKeys: [StudentTaskGroupTypeEnum!]! + + """Тип обучения""" + learningType: LearningTypeEnum + + """поля для сортировки StudentTask внутри группы""" + sorting: [SortingField!]! + + """ + параметры пагинации групп + если группа NONE, то пагинация по StudentTask + """ + paging: PagingInput! + ): GetStudentTasksGroupedResponse! @deprecated(reason: "Под удаление. Использовать getStudentTasksWithEnumType") + + """Возвращает Задания в контексте студента по фильтрам для конкурсов""" + getStudentTasksForExternalCompetitions( + """Идентификаторы Учебных Модулей (goals.goal_id)""" + moduleIds: [ID!]! + + """ + Статусы Заданий, по которым фильтруем, если массив пустой считается, что запрос по любому статусу + """ + statuses: [TaskStatusEnum!]! + + """ + Типы проверки заданий, по которым фильтруем, если массив пустой, то по всем + """ + taskCheckTypes: [TaskCheckEnum!]! + + """список конкурсов""" + externalCompetitionIds: [ID!]! + + """ + список кодов заданий (после выбора Предмета, а затем Модуля по предмету) + """ + taskIds: [ID!]! + + """ + список идентификаторов студента по которым необходимо отфильтровать задания + """ + studentIds: [ID!] + + """начало периода изменения статуса задания""" + statusDateModifiedFrom: Date + + """окончание период изменения статуса задания""" + statusDateModifiedTo: Date + + """строка поиска по названию задания""" + taskTitleTextSearch: String + + """строка поиска по названию модуля""" + moduleTitleTextSearch: String + + """строка поиска по названию конкурса""" + competitionTitleTextSearch: String + + """ + ключи, по которым группировать StudentTask + если группировка не нужна, использовать StudentTaskGroupTypeEnum.NONE + в таком случае все будет сложено в группу "NONE" - ["NONE": [все StudentTask]] + использовать группировку NONE с другими группировками нельзя, будет исключение + сортировка групп происходит в порядке переданных типов, + кроме BY_CLASS - если она присутствует, сортировка всегда сначала по классу - причем сначала по номеру параллели, потом по имени класса, - потом в порядке переданных + """ + groupKeys: [StudentTaskGroupTypeEnum!]! + + """поля для сортировки StudentTask внутри группы""" + sorting: [SortingField!]! + + """ + параметры пагинации групп + если группа NONE, то пагинация по StudentTask + """ + paging: PagingInput! + ): GetStudentTasksGroupedResponse! + + """ + Возвращает Задания в контексте учителя по фильтрам с подменой статусов заданий + к примеру статус заданий "на проверке" при типе проверки "самопроверка" или "проверка другим студентом" и не назначена на данного учителя + будет заменен на "Назначено" + """ + getStudentTasksWithStatusReplacement( + """Идентификаторы Студентов (students.student_id)""" + studentIds: [UUID!]! + + """Идентификаторы Учебных Модулей (goals.goal_id)""" + moduleIds: [ID!]! + + """ + Статусы Заданий, по которым фильтруем, если массив пустой считается, что запрос по любому статусу + """ + statuses: [TaskStatusEnum!]! + + """ + Типы проверки заданий, по которым фильтруем, если массив пустой, то по всем + """ + taskCheckTypes: [TaskCheckEnum!]! + + """ + список кодов заданий (после выбора Предмета, а затем Модуля по предмету) + """ + taskIds: [ID!]! + + """Идентификаторы Школ""" + schoolIds: [UUID!] + + """Начало последнего периода пребывания задачи в статусе NEED_CHECK""" + lastNeedCheckStatusDateTimeFrom: DateTime + + """ + Конец последнего периода пребывания задачи в статусе NEED_CHECK (inclusive) + """ + lastNeedCheckStatusDateTimeTo: DateTime + + """ + ключи, по которым группировать StudentTask + если группировка не нужна, использовать StudentTaskGroupTypeEnum.NONE + в таком случае все будет сложено в группу "NONE" - ["NONE": [все StudentTask]] + использовать группировку NONE с другими группировками нельзя, будет исключение + сортировка групп происходит в порядке переданных типов, + кроме BY_CLASS - если она присутствует, сортировка всегда сначала по классу - причем сначала по номеру параллели, потом по имени класса, - потом в порядке переданных + """ + groupKeys: [StudentTaskGroupTypeEnum!]! + + """Тип обучения""" + learningTypes: [LearningTypeEnum!]! + + """ + скрыть задания вне траектории в статусе "назначено" (ученик к ним не приступал) + """ + hideNotStartedOutOfTrajectoryTasks: Boolean + + """поля для сортировки StudentTask внутри группы""" + sorting: [SortingField!]! + + """ + параметры пагинации групп + если группа NONE, то пагинация по StudentTask + """ + paging: PagingInput! + ): GetStudentTasksGroupedResponse! + + """""" + getStudentTasksWithEnumType( + """Идентификаторы Студентов (students.student_id)""" + studentIds: [UUID!]! + + """Идентификаторы Учебных Модулей (goals.goal_id)""" + moduleIds: [ID!]! + + """ + Статусы Заданий, по которым фильтруем, если массив пустой считается, что запрос по любому статусу + """ + statuses: [TaskStatusEnum!]! + + """ + Идентификаторы предметов (subjects.subject_id), если массив пустой считается, что запрос по любому предмету + """ + subjectIds: [ID!]! + + """ + Идентификаторы Групп по предмету (stage_subject_groups.stage_subject_group_id), если массив пустой считается, что запрос по любому классу + """ + stageSubjectGroupIds: [ID!]! + + """ + Типы Заданий, по которым фильтруем, если массив пустой считается, что по любому типу + """ + taskTypes: [TaskTypeEnum!]! + + """ + Типы проверки заданий, по которым фильтруем, если массив пустой, то по всем + """ + taskCheckTypes: [TaskCheckEnum!]! + + """ + список кодов заданий (после выбора Предмета, а затем Модуля по предмету) + """ + taskIds: [ID!]! + + """ + список уровней заданий, если массив пустой, считается, что по любому уровню + """ + goalLevelValues: [Float!]! + + """Идентификаторы регионов""" + regionIds: [UUID!]! + + """Идентификаторы Школ""" + schoolIds: [UUID!] + + """начало периода изменения статуса задания""" + statusDateModifiedFrom: Date + + """окончание период изменения статуса задания""" + statusDateModifiedTo: Date + + """начало периода любого изменения задания""" + modifiedFrom: DateTime + + """окончание периода любого изменения задания""" + modifiedTo: DateTime + + """Начало последнего периода пребывания задачи в статусе NEED_CHECK""" + lastNeedCheckStatusDateTimeFrom: DateTime + + """ + Конец последнего периода пребывания задачи в статусе NEED_CHECK (inclusive) + """ + lastNeedCheckStatusDateTimeTo: DateTime + + """строка для поиска по ФИ ученика/названию задания/названию модуля""" + textSearch: String + + """строка поиска по ФИ ученика""" + studentFioTextSearch: String + + """строка поиска по названию группы по предмету; не зависит от регистра""" + stageSubjectGroupTitleTextSearch: String + + """строка поиска по названию задания""" + taskTitleTextSearch: String + + """строка поиска по названию модуля""" + moduleTitleTextSearch: String + + """строка поиска по названию предмета""" + subjectTitleTextSearch: String + + """ + ключи, по которым группировать StudentTask + если группировка не нужна, использовать StudentTaskGroupTypeEnum.NONE + в таком случае все будет сложено в группу "NONE" - ["NONE": [все StudentTask]] + использовать группировку NONE с другими группировками нельзя, будет исключение + сортировка групп происходит в порядке переданных типов, + кроме BY_CLASS - если она присутствует, сортировка всегда сначала по классу - причем сначала по номеру параллели, потом по имени класса, - потом в порядке переданных + """ + groupKeys: [StudentTaskGroupTypeEnum!]! + + """Тип обучения""" + learningTypes: [LearningTypeEnum!]! + + """поля для сортировки StudentTask внутри группы""" + sorting: [SortingField!]! + + """ + параметры пагинации групп + если группа NONE, то пагинация по StudentTask + """ + paging: PagingInput! + + """Тип задания, с точки зрения где выполняется задание""" + searchType: [TaskSearchTypeEnum!] + + """Включить список группы по предмету в которых учитель класс. рук""" + includeFormMaster: Boolean + + """Включить только задания текущего учебного года""" + includeOnlyCurrentYear: Boolean + ): GetStudentTasksGroupedResponse! + + """ + Замена методу getStudentTasksWithEnumType для Дашборд. Убраны лишние фильтрации и лишние вызовы разных методов. + Все необходимые аргументы достаются на бэке. Так же был совет, не использовать этот метод на других экранах, + так как он был написан для страницы проверки заданий + """ + getStudentTasksForDashboard: [StudentTask!]! + + """""" + getNeedCheckTeacherStudentTasks( + """начало периода заданий для отображения""" + filteringDateFrom: Date + + """окончание периода для отображения заданий""" + filteringDateTo: Date + + """""" + groupKey: StudentTaskGroupTypeEnum + + """""" + learningTypes: [LearningTypeEnum!]! + + """""" + paging: PagingInput + ): GetStudentTasksGroupedResponse! + + """ + Возвращает количество заданий в контексте студента по фильтрам + Копия getStudentTasks, но без сортировки и пагинации + """ + getStudentTasksCount( + """Идентификаторы Студентов (students.student_id)""" + studentIds: [UUID!]! + + """Идентификаторы Учебных Модулей (goals.goal_id)""" + moduleIds: [ID!]! + + """ + Статусы Заданий, по которым фильтруем, если массив пустой считается, что запрос по любому статусу + """ + statuses: [TaskStatusEnum!]! + + """ + Идентификаторы предметов (subjects.subject_id), если массив пустой считается, что запрос по любому предмету + """ + subjectIds: [ID!]! + + """ + Идентификаторы Групп по предмету (stage_subject_groups.stage_subject_group_id), если массив пустой считается, что запрос по любому классу + """ + stageSubjectGroupIds: [ID!]! + + """ + Типы Заданий, по которым фильтруем, если массив пустой считается, что по любому типу + """ + taskTypes: [TaskTypeEnum!]! + + """ + Типы проверки заданий, по которым фильтруем, если массив пустой, то по всем + """ + taskCheckTypes: [TaskCheckEnum!]! + + """ + список кодов заданий (после выбора Предмета, а затем Модуля по предмету) + """ + taskIds: [ID!]! + + """ + список уровней заданий, если массив пустой, считается, что по любому уровню + """ + goalLevelValues: [Float!]! + + """Идентификаторы Школ""" + schoolIds: [UUID!] + + """начало периода изменения статуса задания""" + statusDateModifiedFrom: Date + + """окончание период изменения статуса задания""" + statusDateModifiedTo: Date + + """начало периода любого изменения задания""" + modifiedFrom: DateTime + + """конец периода любого изменения задания""" + modifiedTo: DateTime + + """Начало последнего периода пребывания задачи в статусе NEED_CHECK""" + lastNeedCheckStatusDateTimeFrom: DateTime + + """ + Конец последнего периода пребывания задачи в статусе NEED_CHECK (inclusive) + """ + lastNeedCheckStatusDateTimeTo: DateTime + + """строка для поиска по ФИ ученика/названию задания/названию модуля""" + textSearch: String + + """строка поиска по ФИ ученика""" + studentFioTextSearch: String + + """строка поиска по названию группы по предмету; не зависит от регистра""" + stageSubjectGroupTitleTextSearch: String + + """строка поиска по названию задания""" + taskTitleTextSearch: String + + """строка поиска по названию модуля""" + moduleTitleTextSearch: String + + """строка поиска по названию предмета""" + subjectTitleTextSearch: String + + """Тип задания, с точки зрения где выполняется задание""" + searchType: [TaskSearchTypeEnum!] + ): Int! @deprecated(reason: "Под удаление. Использовать getStudentTasksCountWithEnumType") + + """ + Получить информацию об учениках группы по предмету и их группе успеваемости + """ + getStudentsWithPerformance(classSubjectGroupId: ID!, studyPeriodId: ID!): [StudentWithPerformance!]! + + """ + Возвращает количество заданий в контексте студента по фильтрам + Копия getStudentTasks, но без сортировки и пагинации + """ + getStudentTasksCountWithEnumType( + """Идентификаторы Студентов (students.student_id)""" + studentIds: [UUID!]! + + """Идентификаторы Учебных Модулей (goals.goal_id)""" + moduleIds: [ID!]! + + """ + Статусы Заданий, по которым фильтруем, если массив пустой считается, что запрос по любому статусу + """ + statuses: [TaskStatusEnum!]! + + """ + Идентификаторы предметов (subjects.subject_id), если массив пустой считается, что запрос по любому предмету + """ + subjectIds: [ID!]! + + """ + Идентификаторы Групп по предмету (stage_subject_groups.stage_subject_group_id), если массив пустой считается, что запрос по любому классу + """ + stageSubjectGroupIds: [ID!]! + + """ + Типы Заданий, по которым фильтруем, если массив пустой считается, что по любому типу + """ + taskTypes: [TaskTypeEnum!]! + + """ + Типы проверки заданий, по которым фильтруем, если массив пустой, то по всем + """ + taskCheckTypes: [TaskCheckEnum!]! + + """ + список кодов заданий (после выбора Предмета, а затем Модуля по предмету) + """ + taskIds: [ID!]! + + """ + список уровней заданий, если массив пустой, считается, что по любому уровню + """ + goalLevelValues: [Float!]! + + """Идентификаторы Школ""" + schoolIds: [UUID!] + + """начало периода изменения статуса задания""" + statusDateModifiedFrom: Date + + """окончание период изменения статуса задания""" + statusDateModifiedTo: Date + + """начало периода любого изменения задания""" + modifiedFrom: DateTime + + """конец периода любого изменения задания""" + modifiedTo: DateTime + + """Начало последнего периода пребывания задачи в статусе NEED_CHECK""" + lastNeedCheckStatusDateTimeFrom: DateTime + + """ + Конец последнего периода пребывания задачи в статусе NEED_CHECK (inclusive) + """ + lastNeedCheckStatusDateTimeTo: DateTime + + """строка для поиска по ФИ ученика/названию задания/названию модуля""" + textSearch: String + + """строка поиска по ФИ ученика""" + studentFioTextSearch: String + + """строка поиска по названию группы по предмету; не зависит от регистра""" + stageSubjectGroupTitleTextSearch: String + + """строка поиска по названию задания""" + taskTitleTextSearch: String + + """строка поиска по названию модуля""" + moduleTitleTextSearch: String + + """строка поиска по названию предмета""" + subjectTitleTextSearch: String + + """Тип задания, с точки зрения где выполняется задание""" + searchType: [TaskSearchTypeEnum!] + + """Тип обучения""" + learningTypes: [LearningTypeEnum!]! + + """Включить список группы по предмету в которых учитель класс. рук""" + includeFormMaster: Boolean + ): Int! + + """Возвращает количество Заданий по Статусам""" + getStudentTaskStatusQuantity( + """Идентификаторы Студентов (students.student_id)""" + studentIds: [UUID!]! + + """Идентификаторы Учебных Модулей (goals.goal_id)""" + moduleIds: [ID!]! + + """ + Статусы Заданий, по которым фильтруем, если массив пустой считается, что запрос по любому статусу + """ + statuses: [TaskStatusEnum!]! + + """ + Идентификаторы предметов (subjects.subject_id), если массив пустой считается, что запрос по любому предмету + """ + subjectIds: [ID!]! + + """ + Идентификаторы Групп по предмету (stage_subject_groups.stage_subject_group_id), если массив пустой считается, что запрос по любому классу + """ + stageSubjectGroupIds: [ID!]! + + """ + Типы Заданий, по которым фильтруем, если массив пустой считается, что по любому типу + """ + taskTypes: [TaskTypeEnum!]! + + """ + Типы проверки заданий, по которым фильтруем, если массив пустой, то по всем + """ + taskCheckTypes: [TaskCheckEnum!]! + + """ + список кодов заданий (после выбора Предмета, а затем Модуля по предмету) + """ + taskIds: [ID!]! + + """ + список уровней заданий, если массив пустой, считается, что по любому уровню + """ + goalLevelValues: [Float!]! + + """начало периода изменения статуса задания""" + statusDateModifiedFrom: Date + + """окончание период изменения статуса задания""" + statusDateModifiedTo: Date + + """начало периода любого изменения задания""" + modifiedFrom: DateTime + + """окончание периода любого изменения задания""" + modifiedTo: DateTime + + """Начало последнего периода пребывания задачи в статусе NEED_CHECK""" + lastNeedCheckStatusDateTimeFrom: DateTime + + """ + Конец последнего периода пребывания задачи в статусе NEED_CHECK (inclusive) + """ + lastNeedCheckStatusDateTimeTo: DateTime + + """строка для поиска по ФИ ученика/названию задания/названию модуля""" + textSearch: String + + """Тип обучения""" + learningType: LearningTypeEnum + ): [TaskStatusWithQuantity!]! @deprecated(reason: "Под удаление. Использовать getStudentTaskStatusQuantityWithEnumType") + + """""" + getStudentTaskStatusQuantityWithEnumType( + """Идентификаторы Студентов (students.student_id)""" + studentIds: [UUID!]! + + """Идентификаторы Учебных Модулей (goals.goal_id)""" + moduleIds: [ID!]! + + """ + Статусы Заданий, по которым фильтруем, если массив пустой считается, что запрос по любому статусу + """ + statuses: [TaskStatusEnum!]! + + """ + Идентификаторы предметов (subjects.subject_id), если массив пустой считается, что запрос по любому предмету + """ + subjectIds: [ID!]! + + """ + Идентификаторы Групп по предмету (stage_subject_groups.stage_subject_group_id), если массив пустой считается, что запрос по любому классу + """ + stageSubjectGroupIds: [ID!]! + + """ + Типы Заданий, по которым фильтруем, если массив пустой считается, что по любому типу + """ + taskTypes: [TaskTypeEnum!]! + + """ + Типы проверки заданий, по которым фильтруем, если массив пустой, то по всем + """ + taskCheckTypes: [TaskCheckEnum!]! + + """ + список кодов заданий (после выбора Предмета, а затем Модуля по предмету) + """ + taskIds: [ID!]! + + """ + список уровней заданий, если массив пустой, считается, что по любому уровню + """ + goalLevelValues: [Float!]! + + """начало периода изменения статуса задания""" + statusDateModifiedFrom: Date + + """окончание период изменения статуса задания""" + statusDateModifiedTo: Date + + """начало периода любого изменения задания""" + modifiedFrom: DateTime + + """окончание периода любого изменения задания""" + modifiedTo: DateTime + + """Начало последнего периода пребывания задачи в статусе NEED_CHECK""" + lastNeedCheckStatusDateTimeFrom: DateTime + + """ + Конец последнего периода пребывания задачи в статусе NEED_CHECK (inclusive) + """ + lastNeedCheckStatusDateTimeTo: DateTime + + """строка для поиска по ФИ ученика/названию задания/названию модуля""" + textSearch: String + + """ + заменять статус "на проверке" для заданий не проверяемых учителем. Замена на статус "назначено" + """ + replaceStudentTaskStatusesForTeacher: Boolean + + """Тип обучения""" + learningTypes: [LearningTypeEnum!]! + + """Включить список группы по предмету в которых учитель класс. рук""" + includeFormMaster: Boolean + ): [TaskStatusWithQuantity!]! + + """""" + getStudentTaskStatusQuantityCompetition( + """""" + moduleIds: [ID!]! + + """ + Статусы Заданий, по которым фильтруем, если массив пустой считается, что запрос по любому статусу + """ + statuses: [TaskStatusEnum!]! + + """ + Типы проверки заданий, по которым фильтруем, если массив пустой, то по всем + """ + taskCheckTypes: [TaskCheckEnum!]! + + """список конкурсов""" + externalCompetitionIds: [ID!]! + + """ + список кодов заданий (после выбора Предмета, а затем Модуля по предмету) + """ + taskIds: [ID!]! + + """начало периода изменения статуса задания""" + statusDateModifiedFrom: Date + + """окончание период изменения статуса задания""" + statusDateModifiedTo: Date + + """строка для поиска по ФИ ученика/названию задания/названию модуля""" + textSearch: String + ): [TaskStatusWithQuantity!]! + + """Возвращает количество Заданий по Статусам""" + getStudentModulesTaskStatusQuantityWithEnumType( + """""" + studentInSubgroupIds: [ID!]! + + """Идентификаторы Модулей (goals.goal_id)""" + moduleIds: [ID!] + + """ + Список идентификаторов заданий (после выбора Предмета, а затем Модуля по предмету) + """ + taskIds: [ID!] + + """ + Статусы Заданий, по которым фильтруем, если массив пустой считается, что запрос по любому статусу + """ + statuses: [TaskStatusEnum!] + + """ + Типы проверки заданий, по которым фильтруем, если массив пустой, то по всем + """ + taskCheckTypes: [TaskCheckEnum!] + ): [StudentModulesTaskStatusWithQuantity!]! + + """ + Возвращает информацию для отображения мониторинга Группы по Предмету + по идентификатору Группы по Предмету (stage_subject_groups.stage_subject_group_id) + ВНИМАНИЕ!!! Возвращаемый набор данных захардкожен на бэкенде, + при расгирении возвращаемого набора данных необходима доработка на бэке. + """ + getClassSubjectMonitoring(classSubjectId: ID!): ClassSubject! @deprecated(reason: "Запрос будет удален в версии 0.15.0 . Необходимо использовать один из запросов getClassSubjectStudents, getClassSubjectPerformance, getClassSubjectAssessments, getClassSubjectControlWorks в зависимости от вкладки") + + """Агрегированная информация вкладки мои ученики экрана мои классы""" + getClassSubjectStudents(classSubjectId: ID!): ClassSubject! + + """ + Агрегированная информация вкладки мои ученики экрана мои классы с разбивкой по страницам + """ + getClassSubjectStudentsMonitoring( + """""" + classSubjectId: ID! + + """ + учитывать ли группровку по подгруппам при разбивке по страницам или только сортировку + """ + loadBySubgroups: Boolean! + + """ + поле сортировки + performance - в любом регистре для сортировки по темпу + по фио ученика в любом другом случае + """ + sorting: SortingField + + """постраничная загрузка""" + page: PagingInput! + ): ClassSubjectStudentsBySubgroupsPage! + + """Получение информации о текущей успеваемости группы класса по предмету""" + getClassSubjectPerformance( + """ID группы класса по предмету (то же, что stageSubjectGroupId)""" + classSubjectId: ID! + + """ID модулей""" + moduleIds: [ID!]! + + """ID учеников внутри группы (пустой для всех учеников)""" + studentIds: [ID!]! + + """ID задания внутри модуля (пустой для всех заданий)""" + taskIds: [ID!]! + + """Фильтр по статусу задания (пустой для всех статусов)""" + taskStatuses: [TaskStatusEnum!]! + + """Фильтр по типам задания (пустой для всех типов)""" + taskTypes: [TaskTypeEnum!]! + + """Фильтр по форме задания (пустой для всех форм)""" + taskForms: [TaskAssignmentEnum!]! + + """ + Типы проверки заданий, по которым фильтруем, если массив пустой, то по всем + """ + taskCheckTypes: [TaskCheckEnum!]! + + """Пагинация по ученикам""" + paging: PagingInput! + ): GetClassSubjectPerformanceResponse! + + """Агрегированная информация вкладки оценки экрана мои классы""" + getClassSubjectAssessments(classSubjectId: ID!): ClassSubject! + + """ + Агрегированная информация вкладки контрорльная работа экрана мои классы + """ + getClassSubjectControlWorks(classSubjectId: ID!): ClassSubject! + + """ + Возвращает признак, имеет ли право текущий пользователь редактировать модуль + """ + checkGoalAllowEdit(goalId: ID!): Boolean! + + """ + Возвращает признак, имеет ли право текущий пользователь редактировать задание + """ + checkTaskAllowEdit(taskId: ID!): Boolean! + + """ + Проверяет наличие студентов, которым учитель преподает в активных группах по предмету + """ + checkMyStudentsPresent: Boolean! + + """Определение прав учителя относительно группы по предмету""" + checkClassSubjectPermissions(classSubjectId: ID!): ClassSubjectPermission! + + """ + Определение прав учителя относительно группы по предмету для электронного журнала + """ + checkJournalLessonsPermissions(classSubjectId: ID!): ElectronicJournalPermission! + + """Определение прав учителя относительно группы по предмету""" + checkClassSubjectPermissionsForSubjectIDs(classSubjectIds: [ID!]!): [ClassSubjectIdToPermission!]! + + """Simplified in EDU-69256""" + getLandingTemplates: [LandingTemplate!]! + + """ + Возвращает "соседние" Группы по Предмету Учителя (stage_subject_groups) по идентификатору группы + соседние по предмету(subjects.subject_id), идентификатору параллели (stages.stage_id) и году (academic_years) + """ + getNestedClassSubjectsByStageSubjectGroupId(stageSubjectGroupId: ID!): [ClassSubject!]! + + """ + Возвращает текущие Группы по Предмету Учителя (stage_subject_groups) + по идентификатору Предмета (subjects.subject_id) и идентифкатору параллели (stages.stage_id) + """ + getClassSubjectsBySubjectIdAndStageId(subjectId: ID!, stageId: ID!): [ClassSubject!]! + + """ + по идентификатору Предмета (subjects.subject_id) и идентифкатору параллели (stages.stage_id) + только те группы, в которых учитель преподает + """ + getClassSubjectsTaughtByTeacherBySubjectIdAndStageId(subjectId: ID!, stageId: ID!): [ClassSubject!]! + + """ + Получить Планы на Группы по Предмету Учителя, в которых он вел в академическом году, + по идентификатору академического года (academic_years.academic_year_id) + """ + getClassSubjectPlansByAcademicYearId(academicYearId: ID!): [ClassSubject!]! + + """ + Все доступные пользователю области видимости для установки при создании задания + """ + getAvailableScopeTypesForCreateTask: AvailableScopes! + + """ + Все доступные пользователю области видимости для установки при создании модуля + """ + getAvailableScopeTypesForCreateGoal: AvailableScopes! + + """Получить прогресс учащихся""" + getStudentsProgress(filter: StudentProgressFilterInput!): [StudentPersonalProgress!]! + + """Получить прогресс учащихся для проекта Bootcamp""" + getStudentsProgressForBTC(filter: StudentProgressFilterInput!): [StudentPersonalProgress!]! + + """ + Получить прогресс учащихся для проекта Bootcamp (версия 2, использующая report-service) + """ + getStudentsProgressForBTCV2(filter: StudentProgressFilterBTCInput!): [StudentPersonalProgress!]! + + """Получить прогресс учащихся по траекториям для проекта Bootcamp""" + getStudentsProgressByTrajectoryForBTC(filter: StudentProgressFilterInput!): [StudentPersonalProgressByTrajectory!]! + + """ + Получить прогресс учащихся по траекториям для проекта Bootcamp (версия 2, использующая report-service) + """ + getStudentsProgressByTrajectoryForBTCV2(filter: StudentProgressFilterBTCInput!): [StudentPersonalProgressByTrajectory!]! + + """ + Получить доступные модули, которые запланированы у учеников подходящих под фильтр + """ + getStudentModulesForProgressReport(filter: StudentProgressSearchModulesInput!): [StudyModule!]! + + """ + Получить доступные модули, которые запланированы у учеников подходящих под фильтр, оптимизировано + """ + getStudentModulesForProgressReportForBTC(filter: StudentProgressSearchModulesInput!): [StudyModule!]! + + """Получить учеников по фильтру""" + getStudentsForProgress(filter: StudentSearchFilterInput!): [StudentForProgress!]! + + """Эскпорт прогресса учащихся в файл""" + exportStudentProgress(exportRequest: StudentPersonalProgressExportInput!): StudentPersonalProgressReport! + + """Эскпорт прогресса учащихся в файл для проекта Bootcamp""" + exportStudentProgressForBTC(exportRequest: StudentPersonalProgressExportInput!): StudentPersonalProgressReport! + + """Эскпорт прогресса учащихся по траекториям в файл для проекта Bootcamp""" + exportStudentProgressByTrajectoryForBTC(exportRequest: StudentPersonalProgressExportInput!): StudentPersonalProgressReport! + + """Получить кол-во учеников по фильтру""" + getStudentsForProgressCount(filter: StudentSearchCountFilterInput!): Int! + + """Получить кол-во учеников по фильтру""" + getStudentsForProgressCountForBTC(filter: StudentSearchCountFilterInput!, mode: String): Int! + + """Получить кол-во учеников по фильтру""" + getStudentsForProgressCountForBTCV2(filter: StudentSearchCountFilterBTCInput!, mode: String): Int! + + """Возвращает все Контрольные Работы Учителя по Учебному Модулю""" + getControlWorksByModuleId( + """идентификатор Учебного Модуля (goals.goal_id)""" + moduleId: ID! + ): [ClassSubjectControlWork!]! + + """ + Возвращает Группы по Предмету Учителя текущего года с захардкоженным набором полей + """ + getCurrentClassSubjectsGrid: [ClassSubject!]! + + """ + Возвращает Контрольные Работы на Группу по Предмету Учителя по идентификаторам + """ + getControlWorksByIds( + """ + идентификаторы Контрольных Работ на Группу по Предмету (stage_subject_group_control_works.stage_subject_control_work_id) + """ + classSubjectControlWorkIds: [ID!]! + ): [ClassSubjectControlWork!]! + + """ + Возвращает всю персональную информацию по Контрольной Работе на Группу по Предмету + """ + getClassSubjectControlWorkInfo(classSubjectControlWorkId: ID!): ClassSubjectControlWorkInfo! + + """Проверяет, создавал ли эту контрольную учитель""" + checkClassSubjectPermissionByControlWorkId(classSubjectControlWorkId: ID!): Boolean! + + """ + Проверяет, может ли учительпросмотреть контрольную на экранах Группы по Предмету + """ + checkClassSubjectViewPermissionByControlWorkId(classSubjectControlWorkId: ID!): Boolean! + + """ + Возвращает все Группы по Предмету, в которых учатся ученики из Класса по идентификатору Класса + """ + getClassSubjectsForFormMasterByStageGroupId(stageGroupId: ID!): [ClassSubject!]! + + """Возвращает слот плейлиста по идентификатору и типу плейлиста""" + getTaskSetSlotById(slotId: ID!, taskSetType: PlaylistType!): TaskSetSlot! + + """Информация о слотах в модуле""" + getTaskSetSLotsByFilter( + """идентификаторы модулей""" + moduleIds: [ID!]! + + """идентификаторы наборов заданий""" + taskSetIds: [ID!]! + + """значения уровней внутри модуля""" + moduleLevelValues: [String!]! + + """ + слот имеет тип "проверяемый" + """ + isCheckSlot: Boolean + + """тип слота""" + slotType: PlaylistSlotTypeEnum + ): [TaskSetSlot!]! + + """Получение набора заданий(системы заданий) в модулях по идентификаторам""" + getTaskSetByGoalIds( + """идентификаторы наборов заданий""" + goalIds: [ID!]! + ): [TaskSet!]! + + """ + Возвращает список внешних систем для проверки заданий с типом "Проверка во внешней системе" + """ + getExternalCheckingSystems: [ExternalCheckingSystem!]! @deprecated(reason: "Не используется") + + """ + Возвращает полную персональную информацию по Заданию в контексте Студента + """ + getStudentTaskInfo( + """Идентификатор Ученика (students.student_id)""" + studentId: UUID! + + """идентификатор задания (tasks.task_id)""" + taskId: ID! + ): StudentTaskInfo + + """ + Возвращает полную персональную информацию по Заданиям в контексте Студента, относящимся строго к одной Task + """ + getStudentTaskInfos( + """Идентификатор Ученика (students.student_id)""" + studentIds: [UUID!]! + + """Идентификатор задания (tasks.task_id)""" + taskId: ID! + + """ + Параметры сортировки по полям StudentTasKWidgetAnswerModel + (student_task_widget_answers.modify_time/create_time) + """ + sortingFields: [SortingField!]! + + """поиск по ученику""" + nameSearch: String + ): StudentTasksWithStageSubjectGroupInfo! + + """ + Возвращает список ВСЕХ предметов, которые имеет право преподавать Учитель + """ + getMySubjects( + """ + Фильтр по ID учебных годов; если пустой, то поиск по всем учебным годам + """ + filterAcademyYears: [ID!] + + """Тип обучения""" + learningTypes: [LearningTypeEnum!] + ): [Subject!]! + + """ + Возвращает список ТОЛЬКО ТЕХ предметов, которые преподает Учитель в активных группах по предмету + """ + getMySubjectsWithActiveGroups( + """ + Фильтр по ID учебных годов; если пустой, то поиск по всем учебным годам + """ + filterAcademyYears: [ID!] + + """Тип обучения""" + learningTypes: [LearningTypeEnum!] + ): [Subject!]! + + """ + Возвращает список студентов, которым учитель преподает в активных группах по предмету + Отсортирован сначала по фамилии, потом по имени + """ + getMyStudents( + """Индентификаторы регионов""" + regionIds: [UUID!]! + + """Индентификаторы школ""" + schoolIds: [UUID!]! + + """Идентификаторы Учебных Модулей (goals.goal_id)""" + moduleIds: [ID!]! + + """Идентификаторы Групп по предмету""" + stageSubjectGroupIds: [ID!]! + + """Идентификатор заданий""" + taskIds: [ID!]! + + """строка поиска по ФИО ученика""" + studentFioTextSearch: String + + """ + Если true вернет еще и студентов, у которых учитель не ведет уроков, но является классным руководителем + """ + needFormTeacherStudent: Boolean + ): [Student!]! + + """список параллелей для учителя""" + getStagesForTeacher( + """ + Фильтр по ID учебных годов; если пустой, то поиск по всем учебным годам + """ + filterAcademyYears: [ID!] + + """Тип обучения""" + learningTypes: [LearningTypeEnum!] + ): [Stage!]! + + """ + список параллелей для учителя (без учета параллелей по которым он не ведет группы, а является только классным руководителем) + """ + getStagesForTeacherWithoutFormMaster( + """ + Фильтр по ID учебных годов; если пустой, то поиск по всем учебным годам + """ + filterAcademyYears: [ID!] + + """Тип обучения""" + learningTypes: [LearningTypeEnum!] + ): [Stage!]! + + """ + список классов (для завуча все классы, для учителя его классы, возможны фильтры по параллели и учебному году, excludeConsulting исключает группы в которых учитель является консультирующим) + """ + getStageGroupsBySchoolAndTeacher(stageId: ID, excludeConsulting: Boolean, academicYearId: ID): [StageGroupInfo!]! + + """ + список предметов для класса (для учителя только его предметы, для классного руководителя его предмет и предметы его класса) + """ + getSubjectsByStageGroupAntSchoolAndTeacher(stageGroupId: ID!): [Subject!]! + + """ + список групп по предмету по классу и предмету (для учителя только его предметы, для классного руководителя его предмет и предметы его класса) + """ + getStageSubjectGroupsByStageGroupAndSubject(stageGroupId: ID!, subjectId: ID!): [StageSubjectGroup!]! + + """список предметов по организации""" + getSubjects: [Subject!]! + + """учебные периоды""" + getStudyPeriodsByStudyPeriodSet(studyPeriodSetId: ID!): [StudyPeriod!]! + + """модули по периоду и группе по предметам""" + getGoalsByDatePeriodAndStageSubjectGroup(startDate: DateTime, endDate: DateTime, stageSubjectGroupId: ID!): [Goal!]! + + """Получение списка доступных мета-критериев оценивания""" + getCriteriaMeta: [Criterion!]! + + """Получение списка шкал для критериев оценивания""" + getCriteriaScales: [CriterionScale!]! + + """ + Получение списка предустановленых связок критериев и шкал для текущей школы + """ + getCriteriaPresetsForCurrentSchool: [CriterionPreset!]! + + """Получение списка предустановленых связок критериев""" + getCriteriaPresetsAll: [CriterionPreset!]! + + """ + Получение списка пользователей по ролям + Фильтры: роли - только BUSINESS_ADM (EDU-24486) + Копия функционала системного администратора, но без фильтра по школе - внутри используется только школа учителя + """ + getUsers(sortingFields: [SortingField!]!, filterUserStatus: UserStatus, filterRoleStatus: RoleStatus, filterRoles: [String!]!, filterStageGroups: [ID!]!, filterSubjects: [ID!]!, filterConfiguredUsers: Boolean, graduationDateTimeStart: DateTime, graduationDateTimeEnd: DateTime, textSearch: String, paging: PagingInput): [User!]! + + """""" + getCurrentSchoolBusinessAdmins(onlyWithEmails: Boolean, paging: PagingInput): [User!]! + + """Получение реальной оценки трудоемкости задания""" + getStudentEffortEstimation(studentTaskId: ID!, studentUserId: UUID!): StudentEffortEstimation + + """Получение цели по предмету ученика""" + getStudentObjectivesByStatuses(statuses: [PersonalObjectiveStatusEnum!]!, studentId: UUID!): [PersonalObjective!]! + + """ + Получение детальной информации о состоянии прогресса ученика по предмету (с понедельным планом или детальной информацией по цели) + Выводится детальная информация о цели по отстающему предмету в случае ее наличия или понедельный план с данными по заданиям + Копия запроса parent.getChildSubjectProgressStateWithDetails, только вместо studentUserId принимается studentId + """ + getStudentSubjectProgressStateWithDetails(studentId: ID!, subjectId: ID!): StudentSubjectProgressState! + + """ + Получение списка заданий групированного по элементам цели для планирования расписания к уроку + """ + getAllPlausibleModuleTasksFromSets( + """айди группы по предмету для которой планируется урок""" + stageSubjectGroupId: ID! + + """айди модуля для которого планируется урок""" + goalId: ID! + ): [GoalLevelWithElements!] + + """Получение плана к уроку по идентификатору таймслота урока""" + getLessonPlanByLessonId(lessonId: ID!): LessonPlan + + """Получение планов к уроку по идентификаторам""" + getLessonPlansByIds(lessonPlanIds: [ID!]!): [LessonPlan!]! + + """Получение планов к уроку в заданном модуле""" + getLessonPlansByGoalIdAndClassSubjectId( + """Ид модуля""" + goalId: ID! + + """Ид группы по предмету по которой необходимо получить планы на урок""" + classSubjectId: ID! + ): [LessonPlan!]! + + """Получение планов к уроку в заданных модулях""" + getLessonPlansByGoalIdsAndClassSubjectId( + """Ид модуля""" + goalIds: [ID!]! + + """Ид группы по предмету по которой необходимо получить планы на урок""" + classSubjectId: ID! + ): [LessonPlan!]! + + """ + Получение мета информация о плане к уроку для страницы редактирования подборки материалов к нему + """ + getLessonPlanMetaBySelectionId( + """Ид подборки материалов""" + selectionId: UUID! + ): LessonPlanMeta! + + """ + Получение мета информация о домашней работе для страницы редактирования подборки материалов к ней + """ + getHomeworkMetaBySelectionId( + """Ид подборки материалов""" + selectionId: UUID! + ): HomeworkMeta! + + """Получение событий в заданном модуле""" + getEventsByGoalId( + """Ид модуля""" + goalId: ID! + + """Ид группы по предмету по которой необходимо фильтровать события""" + stageSubjectGroupId: ID! + ): [Event!]! + + """Получение событий в заданных модулях""" + getEventsByGoalIds( + """Ид модуля""" + goalIds: [ID!]! + + """Ид группы по предмету по которой необходимо фильтровать события""" + stageSubjectGroupId: ID! + ): [Event!]! + + """ + Получение списка всех активных подгрупп по предмету для конкретного ученика в какой-либо из этих подгрупп (stage_subject_subgroup_students.id) + То есть при отправке Лев Абрамов.физика мы получим [Лев Абрамов.математика, Лев Абрамов.история, Лев Абрамов.физика, ...] + Отсортированы по названию предмета + """ + getStudentsInSubgroupByStudentInSubgroupId(studentInSubgroupId: ID!, paging: PagingInput): StudentsInSubgroupPage! + + """ + Получение данных о количестве P2P проверок и средней оценке пользователя как ревьюера + """ + getFeedbackStatisticsAverageScore(studentId: UUID!): FeedbackStatisticsAverageScore! + + """Получение истории изменения опыта""" + getExperienceHistoryDate(userId: UUID!, schoolId: ID): UserExperienceHistoryDate! + + """ + S21. Публичный профиль студента. Получение всех волн (аналог stage_group_name) и форм обучения (аналог stage_name) по StudentId + """ + getStageGroupsS21PublicProfile(studentId: UUID!): [StageGroupS21] @deprecated(reason: "use school21 query") + + """Получение всех проектов по userId и stageGroupId""" + getStudentProjectsByStageGroup(studentId: UUID!, stageGroupId: ID!): [StudentItem]! + + """Получение рекомендаций к названию модуля""" + getStudyModuleNameRecommendationsBySearchString(searchString: String!): [StudyModuleNameRecommendation!]! + + """""" + getLessonPlanRecommendationByModuleId(moduleId: ID!): LessonPlanRecommendation + + """ + Возвращает УМК либо по идентифкаторам параллелей и по идентифкаторам предметов, либо по тому и по тому. + В случае если оба массива пустые возвращает весь справочник УМК. + """ + getUMKsBySubjectIdsAndStageIds(subjectIds: [ID!]!, stageIds: [ID!]!): [UMK!]! @deprecated(reason: "Use getUMKs(filter: UmkFilterInput!)") + + """Поиск УМК по фильтру""" + getUMKs(filter: UmkFilterInput!): [UMK!]! + + """ + Возвращает Книги по идентифкаторам УМК. В случае если массив пустой возвращает весь справочник Книг + """ + getBooksByUMKIds(umkIds: [ID!]!): [Book!]! + + """ + Возвращает Книги по идентифкаторам УМК и типу книги. + В случае пустого массива идентификаторов УМК возвращает весь справочник Книг определенного типа. + """ + getBooksByUMKIdsAndBookType(umkIds: [ID!]!, bookType: BookTypeEnum!): [Book!]! + + """ + Возвращает Рекомендации к названию Учебного Модуля (Темы) по идентификаторам Книг. + В случае если массив пустой возвращает весь справочник рекомендаций к названию Учебного Модуля (Темы) + """ + getStudyModuleNameRecommendationsByBookIds(bookIds: [ID!]!): [StudyModuleNameRecommendation!]! @deprecated(reason: "Book now contains coverUrl, use any other query instead.") + + """""" + getBookAvatarsByIds(bookIds: [ID!]!): [BookAvatar!]! + + """ + Получение списка учебных активностей для эл.журнала по ИД школы и ИД предмета + Если по предмету в школе не задано активностей, возвращаются все доступные в данной школе активности + """ + getLearningActivitiesBySchoolAndSubject( + """Идентификатор школы""" + schoolId: UUID! + + """Идентификатор предмета""" + subjectId: ID! + ): [LearningActivity!]! + + """ + Получение списка заданий и статусов заданий по идентификатору плана на урок + """ + getStudentTasksByLessonPlan( + """Ид плана урока""" + lessonPlanId: ID! + ): ElectonicJournalStudentTasks + + """Получение списка заданий и статусов заданий по идентификатору урока""" + getStudentTasksByLesson( + """Ид урока""" + lessonId: ID! + ): ElectonicJournalStudentTasks + + """ + Получить набор итоговых оценок(за учебный период и год) по группе по предмету и учебному году + """ + getJournalFinalStudentMarks( + """Ид группы по предмету""" + stageSubjectGroupId: ID! + + """Ид учебного года""" + academicYearId: ID + ): [JournalFinalStudentMark!]! + + """""" + getJournalCells(studyPeriodId: ID!, classSubjectId: ID!, studentName: String): GetJournalCellsResponse! + + """ + Возвращает список оценок для школьной параллели и переданного учебного года + """ + getSchoolStageMarks(schoolId: UUID!, stageId: ID!, academicYearId: ID): [SchoolMark!]! + + """Запрос уроков и учебных активностей заданных для них""" + getLessonsWithLearningActivities(studyPeriodId: ID!, classSubjectId: ID!): [LessonsWithLearningActivities!]! + + """ + Возвращает систему оценивания, установленную для школьной параллели и переданного учебного года + """ + getGovernmentMarkTypeBySchoolAndStage(schoolId: UUID!, stageId: ID!, academicYearId: ID): GovernmentMarkType! + + """запрос набора таймслотов для школы учителя""" + getTimeSlotSets: [TimeSlotSet!]! + + """ + запрос набора таймслотов для класса. Возвращаются таймслоты и наборы таймслотов привязанные к расписанию класса + """ + getTimeSlotSetsByStageGroup(stageGroupId: ID!): [TimeSlotSet!]! + + """Возвращает уведомления для электронного журнала""" + getJournalNotifications(stageSubjectGroupId: ID!): GetJournalNotificationsResponseModel! + + """Создание ссылки на online урок""" + getVCUrl(roomTitle: String): VCLink + + """""" + getStageSubjectGroupStudentsByYear(stageSubjectGroupId: ID!): GetStageSubjectGroupStudentsByYearResponse! + + """""" + getModulesForPlan( + """поля сортировки""" + sortingFields: [SortingField] + + """Фильтр по ID предметов""" + filterSubjects: [ID] + + """Фильтр по ID параллелей""" + filterStages: [ID] + + """Созданные мной модули""" + filterIsCreatedByCurrentUser: Boolean + + """Строка поиска""" + textSearch: String + + """Фильтр по ID мягких навыков""" + fSoftSkillIds: [ID] + + """Фильтр по минимальной трудоемкости""" + fLaboriousnessFrom: Int + + """Фильтр по максимальной трудоемкости""" + fLaboriousnessTo: Int + + """Фильтр по скоупам""" + filterScopes: [ScopeEnum] + ): GetModulesResponse! + + """Возвращает конфигурацию оценивания для переданных параметров""" + getSchoolMarkTypeGroupConfigurationsBySchoolAndStage(schoolId: UUID!, stageId: Int!, academicYearId: ID!): SchoolMarkTypeGroupConfiguration! + + """Получить родителей учеников в классе учителя.""" + getClassParent: [ParentPublicProfile]! + + """Получить учителей в рамках одной школы""" + getSchoolTeachers(schoolId: ID, stageGroupNameFormMaster: String, page: PagingInput, stageGroupNameTeacher: [String]): [TeacherPublicProfile!]! + + """Возвращает агрегированные данные для диаграммы Радар (Паутинка)""" + getAggregatedStudentRadarChartData(studentId: ID!, academicYearId: ID, studyPeriodId: ID): AggregatedStudentRadarChart! + + """ + Возвращает агрегированные данные по навыкам для диаграммы Радар (Паутинка) + """ + getStudentSkillRadarChartData( + """Идентификатор студента по которому нужны данные""" + studentId: ID! + + """Идентификатор навыка""" + softSkillId: ID + ): AggregatedSkillStudentRadarChart! + + """Возвращает кол-во модулей назначенных на класс""" + getGoalsNumberByStageGroupId( + """Идентификатор класса""" + stageGroupId: ID! + ): Int! + + """Возвращает данные для диаграммы Радар (Паутинка)""" + getStudentRadarChartData(studentId: ID!, atDate: Date): [StudentRadarChart!]! + + """Получение заметок за переданный день""" + getNotesByDate( + """Дата заметки""" + atDate: Date! + ): [Note!]! + + """Получение заметок за переданный период""" + getNotesBetweenDate( + """Период для получения заметок""" + fromDate: DateTime! + + """""" + toDate: DateTime! + ): [Note!]! + + """Возвращает статистику посещаемости уроков учеником""" + getStudentAttendanceStatisticsByPeriod( + """Идентификатор ученика""" + studentId: ID! + + """Идентификатор учебного периода""" + studyPeriodId: ID + + """Идентификатор академического года""" + academicYearId: ID + ): StudentAttendanceStatistic! + + """Возвращает статистику посещаемости уроков учеником""" + getStudentAttendance( + """Идентификатор ученика""" + studentId: ID! + + """Идентификаторы предметов""" + subjectIds: [ID!] + + """Идентификаторы учебного периода""" + studyPeriodIds: [ID!] + + """Идентификатор академического года""" + academicYearId: ID + ): StudentAttendanceStatistic! + + """ + Возвращает расписание на день учителя, для класса, где он классный руководитель на указанную дату. + """ + getStudentDiaryForTeacher( + """Идентификатор класса""" + stageGroupId: ID! + + """""" + date: Date! + ): TeacherDiary + + """Возвращает расписание на день для учителя на указанную дату""" + getTeacherDiary(date: Date!): TeacherDiary + + """ + Запрос всех модулей с системами заданий по учебным планам учеников группы по предмету. + """ + getStudentPlanGoalsWithTaskSetsForClassSubject( + """ID группы по предмету""" + stageSubjectGroupId: ID! + ): [StudentPlanGoalWithTaskSet!]! + + """Возвращает все элементы целей и относящиеся к ним задания.""" + getStudyModuleGoalElementsForTaskSet( + """id системы заданий""" + taskSetId: ID! + + """тип системы заданий""" + playlistType: PlaylistType! + ): [StudyModuleGoalElement!]! + + """""" + getTaskSetPerformance( + """id системы заданий""" + taskSetId: ID! + + """тип системы заданий""" + playlistType: PlaylistType! + + """ID группы класса по предмету (то же, что stageSubjectGroupId)""" + classSubjectId: ID! + + """ID учеников внутри группы, пустой для всех учеников""" + studentIds: [UUID!]! + + """ID заданий внутри системы заданий, пустой для всех заданий""" + taskIds: [ID!]! + + """Статусы заданий, пустой для всех статусов""" + taskStatuses: [TaskStatusEnum!]! + + """Фильтр по типам задания, пустой для всех типов""" + taskTypes: [TaskTypeEnum!]! + + """Фильтр по форме задания, пустой для всех форм""" + taskForms: [TaskAssignmentEnum!]! + + """Фильтр по элементам целей, пустой для всех целей""" + goalElementIds: [ID!]! + + """ + Признак, что нужно возвращать только те задания, по которым есть вопросы у учеников + """ + hasQuestions: Boolean + ): TaskSetPerformance + + """""" + getStudentTasksWithQuestions(taskSetId: ID!, playlistType: PlaylistType!, classSubjectId: ID!, studentIds: [UUID!]!, taskIds: [ID!]!, statuses: [TaskStatusEnum!], sorting: [SortingField!], paging: PagingInput!, hasQuestion: Boolean): StudentTasksWithPerformance + + """Возвращает планы уроков""" + getLessonPlans(searchString: String, isArchived: Boolean, pagingInput: PagingInput!): [LessonPlanV4!]! + + """Возвращает информацию для фильтра планов уроков""" + getFilterLessonPlans(searchString: String, isArchived: Boolean): [LessonPlanV4!]! + + """Возвращает кол-во планов уроков""" + getLessonPlansCount(searchString: String, isArchived: Boolean): Int! + + """Возвращает план урока по идентификатору""" + getLessonPlanById(lessonPlanId: ID!): LessonPlanV4! + + """ + Возвращает план урока по идентификатору. + Не бросает исключения, как getLessonPlanById, а возвращает описание ошибки и статус + """ + getLessonPlanByIdV2(lessonPlanId: ID!): LessonPlanV4Response! + + """Возвращает идентификаторы уроков для которых есть опубликованный план""" + getLessonsWithPublishedLessonPlan(lessonIds: [ID!]!): [ID!]! + + """Возвращает список заявок для вступления в класс""" + getStageGroupStudentRequests(stageGroupId: ID, status: StageGroupStudentRequestStatus): [StageGroupStudentRequest!]! + + """Возвращает план на ближайший урок для учителя""" + getLessonPlanForNextLesson: LessonPlanV4 + + """Получить соответствия критериям""" + getTaskCriteriaValues( + """Идентификатор задания""" + taskId: ID! + + """Идентификатор ученика""" + studentId: ID! + + """Подтверждённое соответствие критерию""" + isConfirmed: Boolean + ): [StudentCriteriaValue!]! + + """Расчет процента соответствия""" + getTaskCriteriaPercent( + """Идентификатор задания""" + taskId: ID! + + """Идентификатор ученика""" + studentId: ID! + ): CriteriaRecommendedValue! @deprecated(reason: "Под удаление.") + + """Расчет процента соответствия""" + getTaskCriteriaPercentByStudentId( + """Идентификатор задания""" + taskId: ID! + + """Идентификатор ученика""" + studentId: ID! + ): StudentCriteriaPercent! @deprecated(reason: "Под удаление.") + + """Получение всех возможных критериев""" + getTaskCriteria( + """Идентификатор задания""" + taskId: ID! + ): [Criteria!]! + + """Получить данные документа/документов портфолио""" + getPortfolioDocuments( + """Раздел или подраздел, где расположен документ""" + documentCategory: String + + """Тип документа""" + documentType: String + + """all/last/first""" + documentAmount: String + ): [PortfolioDocument] + + """Получение цитаты недели""" + getQuote: Quote! + + """ + Возвращает формы контроля, настроенные для школьного предмета и уровня образования + """ + getLearningActivitiesBySubjectAndStage( + """Идентификатор предмета""" + subjectId: ID! + + """Учебная параллель""" + stageId: ID! + ): [LearningActivity!]! + + """Возвращает отображаемые на Дашборде задания на проверку в Bootcamp""" + getNeedCheckTasksForDashboardBootcamp( + """параметры пагинации""" + paging: PagingInput! + + """""" + ascending: Boolean! + + """""" + more3daysInStatus: Boolean! + + """ + Если true, то возвращаются задания за последние полгода, иначе - за весь период + """ + defaultPeriod: Boolean + ): GetStudentTasksResponse! + + """""" + getStudentTaskAmountForDashboard: [TaskCardsStatusesWithQuantity!]! + + """""" + getTeacherTimetableByPeriod( + """дата и время начала выборки Уроков (в зоне школы) для дневника""" + fromDateTime: DateTime! + + """дата и время окончания выборки Уроков (в зоне школы) для дневника""" + toDateTime: DateTime! + ): TeacherDiary! + + """выбирает только с BadgeAssignmentType == TEACHER_STUDENT""" + getBadgesByKindId(kindId: Int!): [Badge!]! + + """Награды, которые можно назначить за выполнения модуля""" + getModuleAchieveAwards: [Award!]! + + """Опыт любого ученика, пока что доступно только буткемп-мастеру""" + getUserExperience(userId: ID!): UserExperience! + + """Доступные награды для выдачи""" + getAwards(schoolId: ID, badgeKindTypeId: Int, assignmentTypeId: Int, awardName: String, sortingFields: [SortingField], page: PagingInput): [Award!]! + + """количество доступных наград для выдачи""" + getAwardsCount(schoolId: ID, badgeKindTypeId: Int, assignmentTypeId: Int, awardName: String): Int! + + """Обзор""" + getSchoolMonitoring(schoolMonitoringInput: SchoolMonitoringInput, currentRole: String): [SchoolMonitoring!]! + + """Учителя""" + getTeacherSchoolMetrics(teacherSchoolMetricsInput: SchoolMonitoringInput, currentRole: String!): [TeacherSchoolMetrics!]! + + """Учителя. Выгрузка в Excel.""" + getTeacherSchoolMetricsExcel(teacherSchoolMetricsInput: SchoolMonitoringInput!, reportDateTime: String!, currentRole: String): ReportExcelFile! + + """Задания на проверке""" + getTasksOnCheck(tasksDate: DateTime!, startDate: DateTime!, endDate: DateTime!, stageId: Int, stageGroupId: Int, subjectId: Int, stageSubjectGroupId: Int, currentRole: String!): [TasksOnCheck!]! + + """Задания на проверке. Выгрузка в Excel.""" + downloadTasksOnCheckExcel(tasksDate: DateTime!, startDate: DateTime!, endDate: DateTime!, stageId: Int, stageGroupId: Int, subjectId: Int, stageSubjectGroupId: Int, currentRole: String!, reportDateTime: String!): ReportExcelFile! + + """Задания на проверке с детализацией""" + getTasksOnCheckDetailed(tasksOnCheckInput: TasksOnCheckInput!, currentRole: String): [TaskOnCheckDetailed!]! + + """Предметы""" + getModulesProgressBySubjectAndStageReport(startDate: DateTime!, endDate: DateTime!, currentRole: String!, stageSubjectGroupId: Int): [ModulesProgressBySubjectAndStage!]! + + """Предметы. Выгрузка в Excel.""" + downloadModulesProgressBySubjectAndStageExcel(startDate: DateTime!, endDate: DateTime!, currentRole: String!, reportDateTime: String!): ReportExcelFile! + + """Итоговые оценки""" + getStudyPeriodMarks(stageId: Int!, stageGroupId: Int, subjectId: Int, academicYearId: ID, currentRole: String): [StudyPeriodMark!]! + + """Итоговые оценки. Выгрузка в Excel""" + downloadStudyPeriodMarksExcel(stageId: Int!, stageGroupId: Int, subjectId: Int, reportDateTime: String!, academicYearId: ID, currentRole: String): ReportExcelFile! + + """Оценки по предметам""" + getSubjectMarks: [SubjectMarks!]! + + """Статистика. Успеваемость учеников""" + getStudentsAcademicPerformance(startDate: DateTime!, endDate: DateTime!, stageId: Int!, subjectId: Int, stageSubjectGroupId: Int, currentRole: String): [StudentAcademicPerformance!]! @deprecated(reason: "Использовать getStudentsAcademicPerformanceExpandedV2") + + """""" + getStudentsAcademicPerformanceExpanded(startDate: DateTime!, endDate: DateTime!, stageId: Int!, stageSubjectGroupId: Int, currentRole: String): [StudentAcademicPerformanceExpanded!]! + + """""" + getStudentsAcademicPerformanceExpandedV2(startDate: DateTime!, endDate: DateTime!, stageId: Int!, subjectId: Int, stageSubjectGroupId: Int, currentRole: String): [StudentAcademicPerformanceExpandedV2!]! + + """Статистика. Успеваемость учеников. Выгрузка в Excel.""" + downloadStudentsAcademicPerformanceExcel(startDate: DateTime!, endDate: DateTime!, stageId: Int!, stageSubjectGroupId: Int, reportDateTime: String!, currentRole: String): ReportExcelFile! + + """Статистика. Успеваемость учеников расширенная. Выгрузка в Excel.""" + downloadStudentsAcademicPerformanceExpandedExcel(startDate: DateTime!, endDate: DateTime!, stageId: Int!, subjectId: Int, stageSubjectGroupId: Int, reportDateTime: String!, currentRole: String): ReportExcelFile! + + """ + Статистика. Успеваемость учеников расширенная по аттестационным периодам. Выгрузка в Excel. + """ + downloadStudentsAcademicPerformanceByAttestationPeriodExpandedExcel(startDate: DateTime!, endDate: DateTime!, closeModuleDate: Date!, stageId: Int!, subjectId: Int, stageSubjectGroupId: Int, reportDateTime: String!, currentRole: String): ReportExcelFile! + + """Статистика. Мониторинг. Выгрузка в Excel.""" + downloadStudentsMonitoringExcel(classSubjectId: ID!, moduleIds: [ID!]!, studentIds: [UUID!]!, taskIds: [ID!]!, taskStatuses: [TaskStatusEnum!]!, taskTypes: [TaskTypeEnum]!, taskForms: [TaskAssignmentEnum]!, taskCheckTypes: [TaskCheckEnum]!, reportDateTime: String!, currentRole: String): ReportExcelFile! + + """Электронный журнал. Выгрузка в Excel.""" + downloadJournalToExcel(stageSubjectGroupId: ID!, studyPeriodId: ID, academicYearId: ID, reportType: JournalReportTypeEnum!, showThematicPlan: Boolean, showLessonPlan: Boolean, reportDateTime: String!): ReportExcelFile! @deprecated(reason: "Под удаление. EDU-48885") + + """""" + getStudentsMarksResultDetailed(studyPeriodId: Int!, stageId: Int!, stageGroupId: Int!, subjectId: Int!): StudentFinalMarkModel! @deprecated(reason: "Под удаление. EDU-48885") + + """""" + getStudentsMarksSubjectsDetailed(studyPeriodId: Int!, stageId: Int!, studentId: UUID!): StudentFinalMarkSubjectsModel! + + """Отчет "Итоговые оценки. Детальный" с датами""" + getStudentsMarksResultDetailedByDates(periodStartDate: Date!, periodEndDate: Date!, stageId: Int!, stageGroupId: Int!, subjectId: Int!, academicYearId: ID, currentRole: String): StudentFinalMarkModel! + + """Отчет "Итоговые оценки. Детальный" с датами Выгрузка в Excel""" + downloadStudentsMarksResultDetailedExcel(periodStartDate: Date!, periodEndDate: Date!, stageId: Int!, stageGroupId: Int!, subjectId: Int!, reportDateTime: String!, academicYearId: ID, currentRole: String): ReportExcelFile! + + """ + Отчет "Итоговые оценки. Детальный" по ученику и всем предметам с датами + """ + getStudentsMarksSubjectsDetailedByDates(periodStartDate: Date!, periodEndDate: Date!, stageId: Int!, studentId: UUID!, currentRole: String): StudentFinalMarkSubjectsModel! + + """ + Отчет "Успеваемость по эл.журналу" + """ + getStudentJournalPerformance(stageId: Int!, studyPeriodId: Int!): [StudentJournalPerformance!]! + + """Отчет "Успеваемость по эл.журналу" выгрузка в Excel""" + downloadStudentJournalPerformanceExcel(studentJournalPerformanceExcelInput: StudentJournalPerformanceExcelInput!): ReportExcelFile! + + """Отчет "Успеваемость" по Аттестационным периодам""" + getStudentsAcademicPerformanceByAttestationPeriod(startDate: DateTime!, endDate: DateTime!, closeModuleDate: Date!, stageId: Int!, subjectId: Int, currentRole: String): [StudentAcademicPerformance!]! + + """Отчет "Успеваемость" по Аттестационным периодам расширенный""" + getStudentsAcademicPerformanceByAttestationPeriodExpanded(startDate: DateTime!, endDate: DateTime!, closeModuleDate: Date!, stageId: Int!, subjectId: Int, currentRole: String): [StudentAcademicPerformanceExpandedV2!]! + + """Отчет "Успеваемость" расширенный V3""" + getStudentsAcademicPerformanceExpandedV3(startDate: DateTime!, endDate: DateTime!, stageId: Int!, subjectId: Int, stageSubjectGroupId: Int, currentRole: String): [StudentAcademicPerformanceExpandedV2!] + + """Отчет "Успеваемость" по Аттестационным периодам расширенный V2""" + getStudentsAcademicPerformanceByAttestationPeriodExpandedV2(startDate: DateTime!, endDate: DateTime!, closeModuleDate: Date!, stageId: Int!, subjectId: Int, currentRole: String): [StudentAcademicPerformanceExpandedV2!]! + + """Отчет "Успеваемость" расширенный V2. Выгрузка в Excel""" + downloadStudentsAcademicPerformanceExpandedExcelV2(startDate: DateTime!, endDate: DateTime!, stageId: Int!, subjectId: Int, stageSubjectGroupId: Int, reportDateTime: String!, currentRole: String): ReportExcelFile! + + """ + Отчет "Успеваемость" по Аттестационным периодам расширенный V2. Выгрузка в Excel + """ + downloadStudentsAcademicPerformanceByAttestationPeriodExpandedExcelV2(startDate: DateTime!, endDate: DateTime!, closeModuleDate: Date!, stageId: Int!, subjectId: Int, stageSubjectGroupId: Int, reportDateTime: String!, currentRole: String): ReportExcelFile! + + """ + Эскпорт прогресса учащихся по траекториям в файл для проекта Bootcamp V2 + """ + exportStudentProgressByTrajectoryForBTCV2(exportRequest: StudentPersonalProgressExportBTCInput!): ReportExcelFile! + + """Эскпорт прогресса учащихся в файл для проекта Bootcamp V2""" + exportStudentProgressForBTCV2(exportRequest: StudentPersonalProgressExportBTCInput!): ReportExcelFile! +} + +"""""" +type TeacherRole { + """""" + id: ID! + + """""" + schoolId: ID! + + """""" + productId: ID + + """""" + orgUnitId: ID + + """""" + school: SafeSchool! + + """""" + status: RoleStatus! + + """предметы, которые преподает учитель""" + subjects: [Subject!]! + + """дата активации роли""" + dateStart: DateTime + + """дата деактивации роли""" + dateEnd: DateTime + + """является ли роль дефолтной при входе пользователя в приложение""" + isDefault: Boolean! + + """название роли""" + role: ROLES! + + """ + группы, которые ведет преподаватель. Запрос тяжелый, в цикле не вызывать + """ + subjectGroups: [ClassSubject!] @deprecated(reason: "Too heavy. Trip to DB for every group parameter. Instead use query:userProfile:getTeacherPublicProfile:subjects:stageGroups") + + """предпочитаемые кабинеты учителя""" + classrooms: [ClassRoom!]! @deprecated(reason: "Кабинеты не являются частью роли") +} + +"""""" +input TeacherRoleInput { + """""" + id: ID + + """""" + schoolId: ID! + + """""" + status: RoleStatus + + """предметы, которые преподает учитель""" + subjects: [ID!] + + """""" + subjectsToRemove: [ID!] + + """""" + temporaryRoleInput: TemporaryRoleInput + + """""" + classroomIds: [ID!] +} + +"""""" +type TeacherSchoolMetrics { + """""" + teacherId: UUID! + + """""" + teacherFullName: String! + + """""" + hasNoMetrics: Boolean! + + """""" + mainMetrics: [TeacherMonitoring!] + + """""" + subjectMetrics: [TeacherSchoolSubjectMetrics!] +} + +"""Фильтр данных отчета 'Обзор работы учителей' выгрузка в Excel""" +input TeacherSchoolMetricsExcelInput { + """""" + schoolMonitoringFilter: TeacherSchoolMetricsInput! + + """""" + metricOrder: Int + + """""" + showNullable: Boolean! + + """""" + showNonNullable: Boolean! + + """""" + filterDescriptions: [FilterDescription!]! +} + +"""элемент фильтра для отчета 'Обзор работы учителей'""" +type TeacherSchoolMetricsFilter { + """""" + stageId: ID! + + """""" + stageName: String! + + """""" + stageGroupId: ID! + + """""" + stageGroupName: String! + + """""" + teacherId: UUID! + + """""" + teacherName: String! + + """""" + subjectId: ID! + + """""" + subjectName: String! + + """""" + studyStepId: Int +} + +"""Фильтр данных отчета 'Обзор работы учителей'""" +input TeacherSchoolMetricsInput { + """""" + stageIds: [ID!] + + """""" + stageGroupIds: [ID!] + + """""" + teacherIds: [UUID!] + + """""" + subjectIds: [ID!] + + """""" + startDate: Date! + + """""" + endDate: Date! +} + +"""""" +type TeacherSchoolSubjectMetrics { + """""" + subjectName: String! + + """""" + metrics: [TeacherMonitoring!] +} + +"""Входящий запрос для получения списка учителей по фильтру""" +input TeacherSearchInput { + """Строка поиска для фильтрации по фамилии учителя""" + searchString: String + + """ + Список id предметов, по которым будем грузить учителей, если пустой список - то ищем по всем предметам + """ + subjectIds: [ID!] + + """Параметры пагинации""" + paging: PagingInput! +} + +""" +Учительский контекст, в котором содержится информация, на кого назначен этот модуль в тех группах, +в которых учитель ведет +""" +type TeacherStudyModuleAssignContext { + """""" + id: ID! + + """ + Группы по предмету ТЕКУЩЕГО УЧЕБНОГО ГОДА, в классовых планах которых присутсвует этот модуль + """ + currentClassSubjects: [ClassSubject!]! +} + +""" +Учительский контекст, в котором содержится информация, на кого назначена эта система заданий +в тех группах, в которых учитель ведет. +""" +type TeacherTaskSetAssignContext { + """""" + id: ID! + + """ + Группы по предмету ТЕКУЩЕГО УЧЕБНОГО ГОДА, в классовых планах которых модулю назначена эта система заданий + """ + currentClassSubjects: [ClassSubject!]! +} + +"""Обзор обучения учителей""" +type TeacherTraining { + """""" + scanDateTime: DateTime + + """""" + items: [TeacherTrainingItem!]! +} + +"""Обзор обучения учителей 3ья волна""" +type TeacherTraining3rdWave { + """""" + userRole: Int! + + """""" + scanDateTime: DateTime + + """""" + items: [TeacherTraining3rdWaveItem!]! +} + +"""Обзор обучения учителей 3ья волна детальный""" +type TeacherTraining3rdWaveDetailed { + """""" + userRole: Int! + + """""" + scanDateTime: DateTime + + """""" + items: [TeacherTraining3rdWaveDetailedItem!]! +} + +"""""" +type TeacherTraining3rdWaveDetailedItem { + """""" + region: String! + + """""" + schoolName: String! + + """""" + identifier: String! + + """""" + login: String + + """""" + fio: String + + """""" + email: String + + """""" + phoneNumber: String + + """""" + stageSubjectGroupEnrollmentDate: Date! + + """""" + modules: [TeacherTraining3rdWaveDetailedModule!]! +} + +"""""" +type TeacherTraining3rdWaveDetailedModule { + """""" + moduleId: Int! + + """""" + moduleName: String! + + """""" + moduleOrder: Int! + + """""" + moduleCompleted: Boolean! + + """""" + moduleLevel3Completed: Boolean! + + """""" + moduleLevel4Completed: Boolean! +} + +"""""" +type TeacherTraining3rdWaveItem { + """""" + region: String! + + """""" + schoolName: String! + + """""" + identifier: String! + + """""" + activeConfiguratorsCount: Int! + + """""" + configuratorsCount: Int! + + """""" + activeTeachersCount: Int! + + """""" + teachersCount: Int! + + """""" + modules: [TeacherTraining3rdWaveModule!]! +} + +"""""" +type TeacherTraining3rdWaveModule { + """""" + moduleId: Int! + + """""" + moduleName: String! + + """""" + moduleOrder: Int! + + """""" + studentsCompletedModule: Int! +} + +""" +Обзор обучения учителей детальный +userRole: 0-PG_Configurator, 1-Configurator, 2-Teacher +""" +type TeacherTrainingDetailed { + """""" + userRole: Int! + + """""" + scanDateTime: DateTime + + """""" + items: [TeacherTrainingDetailedItem!]! +} + +"""""" +type TeacherTrainingDetailedItem { + """""" + region: String! + + """""" + schoolName: String! + + """""" + identifier: String! + + """""" + login: String + + """""" + fio: String + + """""" + email: String + + """""" + phoneNumber: String + + """""" + completedIntroductionToPMOLevel3: Boolean + + """""" + completedIntroductionToPMOLevel4: Boolean + + """""" + completedIntroductionToPMO: Boolean! + + """""" + completedTrainingModuleLevel3: Boolean + + """""" + completedTrainingModuleLevel4: Boolean + + """""" + completedTrainingModule: Boolean! + + """""" + completedCultureOfPMOLevel3: Boolean + + """""" + completedCultureOfPMOLevel4: Boolean + + """""" + completedCultureOfPMO: Boolean! + + """""" + completedGoalsResultsLevel3: Boolean + + """""" + completedGoalsResultsLevel4: Boolean + + """""" + completedGoalsResults: Boolean! + + """""" + completedPersonalPotentialLevel3: Boolean + + """""" + completedPersonalPotentialLevel4: Boolean + + """""" + completedPersonalPotential: Boolean! +} + +"""""" +type TeacherTrainingItem { + """""" + region: String! + + """""" + schoolName: String! + + """""" + identifier: String! + + """""" + activeConfiguratorsCount: Int! + + """""" + configuratorsCount: Int! + + """""" + activeTeachersCount: Int! + + """""" + teachersCount: Int! + + """""" + studentsInPG: Int! + + """""" + completedIntroductionToPMO: Int! + + """""" + completedTrainingModule: Int! + + """""" + completedCultureOfPMO: Int! + + """""" + completedGoalsResults: Int! + + """""" + completedPersonalPotential: Int! +} + +"""Общая информация по учителю с ФИО""" +type TeacherUserInfo { + """""" + teacherId: UUID! + + """""" + user: UserInfo! +} + +"""""" +type TeachersWorkload { + """""" + subjectId: Int! + + """""" + subjectName: String! + + """""" + teachersCount: Int! + + """""" + workload: Workload! +} + +"""""" +type TeachersWorkloadBySubject { + """""" + teacherId: UUID! + + """""" + workload: Workload! +} + +"""""" +type TeachersWorkloadBySubjectForPrincipal { + """""" + teacherId: UUID! + + """""" + fullName: String + + """""" + workload: Workload! +} + +"""""" +type Team { + """""" + id: UUID! + + """""" + name: String! + + """""" + code: String! + + """""" + status: TeamStatusEnum! + + """""" + minTeamMemberCount: Int! + + """""" + maxTeamMemberCount: Int! + + """""" + currentTeamMemberCount: Int! +} + +"""Вид формирования команды для группового задания""" +enum TeamCreateOptionEnum { + """Случайный""" + RANDOM + + """Алгоритмический""" + ALGORITHMIC + + """Ручной""" + MANUAL +} + +"""""" +type TeamExitReason { + """""" + id: ID! + + """""" + type: TeamExitReasonType! + + """""" + description: String! +} + +"""Тип причины выхода участника из команды/проекта""" +enum TeamExitReasonType { + """""" + REMOVED_BY_CAPTAIN + + """""" + LEAVE_PROJECT + + """""" + CAPTAIN_LEAVE_PROJECT + + """""" + DELETE_PROJECT + + """""" + LEAVE_PROJECT_SCHOOL_21 +} + +"""""" +type TeamHistory { + """""" + id: UUID! + + """""" + team: Team! + + """""" + user: User + + """""" + teamRole: TeamRole! + + """""" + exitReason: TeamExitReason + + """""" + exitReasonDescription: String + + """""" + createdTs: DateTime! +} + +"""Временные настройки периодов для студента (с учетом настроек тимлида)""" +type TeamLeadGoalPeriodSettings { + """Дата/время начала регистрации""" + signUpDate: DateTime! + + """Дата/время начала курса""" + beginDate: DateTime! + + """Дата/время начала проверки""" + checkDate: DateTime! + + """Дата/время дедлайна""" + deadlineDate: DateTime! + + """Признак того, что настройки периодов студента и тимлида идентичны""" + isTeamLeadPeriodsEqual: Boolean +} + +"""""" +type TeamMember { + """""" + teamId: UUID! + + """""" + role: TeamRole! + + """""" + user: User +} + +"""""" +type TeamMemberWithVacancy { + """""" + teamMember: TeamMember! + + """""" + vacancy: String +} + +"""""" +type TeamMutations { + """Удаление члена команды капитаном""" + removeMemberFromTeamByCaptain(teamId: UUID!, deletedUserId: UUID!, exitReasonId: Int!, exitReasonDescription: String): TeamWithMembers! + + """Выход пользователя из команды""" + removeMemberFromTeamByThemselves(teamId: UUID!, exitReasonId: Int!, exitReasonDescription: String): TeamWithMembers! + + """Выход капитана из команды""" + removeCaptainFromTeam(teamId: UUID!, exitReasonId: Int!, exitReasonDescription: String): TeamWithMembers +} + +"""""" +type TeamQueries { + """Получение членов команды с данными о пользователе""" + getTeamMembersByTeam(teamId: UUID!): [TeamMember!]! + + """Получение всех членов команд, имеющих определённую роль""" + getTeamMembersByRole(teamRoleId: Int!): [TeamMember!]! + + """Получение всех причин выхода из команды""" + getAllTeamExitReasons: [TeamExitReason!]! + + """Получение всей истории изменений в командах""" + getAllTeamHistory: [TeamHistory!]! + + """Получение всей истории изменений в командах c данными пользователей""" + getTeamHistoryByExitReason(teamExitReasonId: Int!): [TeamHistory!]! + + """ + Получение всех значений справочника причин отклонения/отзыва заявки на проект + """ + getAllDeclineReasons: [DeclineReason]! + + """Получение причины отклонения/отзыва заявки на проект по ид""" + getDeclineReasonById(declineReasonId: UUID!): DeclineReason + + """ + Получение количества созданных приглашений в команды для текущего пользователя + """ + getCreatedJoinTeamRequestCount: Int! + + """Получение членов команды с данными о пользователе""" + getTeamMembersWithVacancyByTeam(teamId: UUID!): [TeamMemberWithVacancy!]! @deprecated(reason: "unused method") + + """""" + getTeamMembersWithVacancyByRole(teamRoleId: Int!): [TeamMemberWithVacancy!]! +} + +"""Роль участника в команде""" +enum TeamRole { + """""" + CAPTAIN + + """""" + PARTICIPANT + + """""" + MENTOR +} + +"""Настройки команды в групповом задании s21""" +type TeamSettingTask { + """Идентификатор""" + id: ID! + + """Тип локации команды""" + location: LocationEnum! + + """Вариант формирования команды""" + teamCreateOption: TeamCreateOptionEnum! + + """Позволяет задать мин кол-во участников""" + minAmountMember: Int! + + """Позволяет задать макс кол-во участников""" + maxAmountMember: Int! + + """ + Параметр, определяющий возможность участникам команды провести голосование для ее расформирования + """ + enableSurrenderTeam: Boolean + + """ + Количество часов, отведенных на проведение голосования для расформирования команды ее участниками + """ + durationAutoDisbandment: Int +} + +"""Настройки команды в групповом задании в школе 21""" +input TeamSettingTaskInput { + """""" + id: ID + + """Тип локации команды""" + location: LocationEnum! + + """Вариант формирования команды""" + teamCreateOption: TeamCreateOptionEnum! + + """Мин кол-во участников""" + minAmountMember: Int! + + """Макс кол-во участников""" + maxAmountMember: Int! + + """ + Параметр, определяющий возможность участникам команды провести голосование для ее расформирования + """ + enableSurrenderTeam: Boolean + + """ + Количество часов, отведенных на проведение голосования для расформирования команды ее участниками + """ + durationAutoDisbandment: Int +} + +"""""" +type TeamSettings { + """""" + location: LocationEnum! + + """""" + teamCreateOption: TeamCreateOptionEnum! + + """""" + minAmountMember: Int! + + """""" + maxAmountMember: Int! + + """ + Параметр, определяющий возможность участникам команды провести голосование для ее расформирования + """ + enableSurrenderTeam: Boolean + + """ + Количество часов, отведенных на проведение голосования для расформирования команды ее участниками + """ + durationAutoDisbandment: Int +} + +""" +Группа настроек комманды из конструктора для проекта в текущем и вышестоящем плане с результатом их сравнения +""" +type TeamSettingsGroupWithEquivalentFlag { + """""" + teamSettings: TeamSettings + + """""" + superiorTeamSettings: TeamSettings + + """""" + equivalentTeamSettings: Boolean! + + """""" + multiCampusIsEnabled: Boolean + + """""" + campusNamesList: [String!] +} + +"""""" +input TeamSettingsInput { + """""" + location: LocationEnum! + + """""" + teamCreateOption: TeamCreateOptionEnum! + + """""" + minAmountMember: Int! + + """""" + maxAmountMember: Int! + + """ + Параметр, определяющий возможность участникам команды провести голосование для ее расформирования + """ + enableSurrenderTeam: Boolean + + """ + Количество часов, отведенных на проведение голосования для расформирования команды ее участниками + """ + durationAutoDisbandment: Int +} + +"""Информация о размере команды""" +type TeamSizeInfo { + """Идентификатор команды""" + teamId: UUID + + """Название команды""" + teamName: String + + """Размер команды""" + teamSize: Int +} + +"""Статус команды""" +enum TeamStatusEnum { + """Команда открыта для формирования""" + OPEN + + """Команда сформирована""" + FORMED + + """Команда расформирована""" + CLOSED +} + +"""""" +type TeamWithMembers { + """""" + team: Team! + + """""" + members: [TeamMember!]! + + """""" + captains: [User!]! +} + +"""""" +type Technology { + """""" + id: UUID! + + """""" + name: String! +} + +"""Асинхронная задача на назначение шаблонов траекторий на студентов""" +type TemplateAssignmentTask { + """Идентификатор асинхронной задачи""" + taskId: UUID! + + """ФИО студента""" + studentFullName: String! + + """Список траекторий (через запятую)""" + trajectories: String! + + """Способ назначения шаблона""" + assignmentMode: String! + + """Дата и время создания""" + creationDateTime: DateTime! + + """Статус асинхронной задачи""" + status: AsyncTaskStatus! + + """Сообщение об ошибке""" + errorMessage: String +} + +""" +Фильтр для списка асинхронных задач на назначение шаблонов траекторий на студентов +""" +input TemplateAssignmentTaskFilter { + """Статус асинхронной задачи""" + status: AsyncTaskStatus + + """ФИО студента для поиска""" + studentNameSearchQuery: String + + """Список идентификаторов классов""" + stageGroupIds: [ID] + + """Данные для пагинации""" + page: PagingInput! +} + +""" +Статусы для фильтров для страницы списка асинхронных задач по назначению шаблонов траектории на студентов +""" +type TemplateAssignmentTaskFilterData { + """Список статусов асинхронных задач""" + taskStatuses: [AsyncTaskStatus] +} + +"""Типы шаблонов для получения файлов из gitlab репозитория""" +enum TemplateType { + """Шаблон докер файлов""" + DOCKER_FILES + + """Шаблон gitignore файлов""" + GIT_IGNORES + + """Шаблон cy файлов""" + GITLAB_CY_YMLS + + """Шаблон файлов-лицензий""" + LICENSES +} + +"""""" +input TemporaryRoleInput { + """""" + dateStart: String + + """""" + dateEnd: String +} + +"""""" +type TenantConfiguration { + """Тенанты (школы), из которых происходит чтение словарей данных""" + tenantToReadFrom: [UUID!]! + + """Тенанты (школы), в которые происходит запись словарей данных""" + tenantToWriteTo: [UUID!]! +} + +"""""" +input TenantConfigurationInput { + """Тенанты (школы), из которых происходит чтение словарей данных""" + tenantToReadFrom: [UUID!]! + + """Тенанты (школы), в которые происходит запись словарей данных""" + tenantToWriteTo: [UUID!]! +} + +"""""" +type TerbanksModel { + """""" + id: ID! + + """""" + name: String! + + """""" + regions: [String] +} + +"""""" +type TestAnswerBody { + """Варианты ответа""" + choices: [TestAnswerBodyChoice!]! +} + +"""""" +type TestAnswerBodyChoice { + """Иденитификатор ответа""" + choiceId: ID! + + """Правильный ответ""" + correct: Boolean +} + +"""""" +input TestAnswerBodyChoiceInput { + """Идентификатор варианта ответа""" + choiceId: ID! +} + +"""""" +input TestAnswerBodyInput { + """Варианты ответов""" + choices: [TestAnswerBodyChoiceInput!]! +} + +"""Тематический план""" +type ThematicPlan { + """Идентификатор тематического плана""" + thematicPlanId: ID! + + """Наименование плана""" + thematicPlanName: String! + + """Идентификатор предмета плана""" + subjectId: ID! + + """Идентификатор параллели плана""" + stageId: ID! + + """Идентификатор общеобразовательного учреждения""" + orgUnitId: UUID! + + """Количество часов на план""" + thematicPlanHours: Int + + """Уровень видимости""" + accessLevelId: ID! + + """Темы в тематическом плане""" + topics: [ThematicPlanTopic] + + """Дата создания плана""" + createdTs: DateTime + + """Автор плана""" + createdUser: PlanningUserInfo + + """Дата обновления плана""" + updatedTs: DateTime + + """Редактор плана""" + updatedUser: PlanningUserInfo +} + +"""Уровень видимости тематического плана.""" +type ThematicPlanAccessLevel { + """Идентификатор уровня видимости""" + id: ID! + + """Название уровня видимости""" + name: String! +} + +"""Модель для создания тематического плана""" +input ThematicPlanCreationInput { + """Название тематического плана""" + name: String! + + """Идентификатор предмета""" + subjectId: ID! + + """Идентификатор параллели""" + stageId: ID! + + """Идентификатор образовательного учреждения""" + orgUnitId: UUID! + + """Количество часов на изучение плана""" + plannedHours: Int! + + """Количество тем""" + plannedTopicsAmount: Int! + + """Уровень видимости""" + accessLevelId: ID! +} + +"""Фильтр для выборки тематических планов""" +input ThematicPlanFilter { + """список параллелей""" + stageIds: [ID] + + """список предметов""" + subjectIds: [ID] + + """список нужных уровней видимости""" + accessLevelIds: [ID] +} + +"""Модель тематического плана для мутаций""" +input ThematicPlanInput { + """Идентификатор тематического плана""" + thematicPlanId: ID! + + """Наименование плана""" + thematicPlanName: String! + + """Идентификатор предмета плана""" + subjectId: ID! + + """Идентификатор параллели плана""" + stageId: ID! + + """Идентификатор общеобразовательного учреждения""" + orgUnitId: UUID! + + """Количество часов на план""" + thematicPlanHours: Int! + + """Список тем в плане""" + topics: [ThematicPlanTopicInput] + + """Уровень видимости""" + accessLevelId: ID! +} + +"""Тема тематического плана""" +type ThematicPlanTopic { + """Идентификатор темы""" + thematicPlanTopicId: ID! + + """Наименование темы""" + topicName: String! + + """Номер темы""" + topicNumber: Int! + + """Количество часов на тему""" + topicHours: Int! + + """Уроки по теме""" + lessons: [ThematicPlanTopicLesson] +} + +"""Модель тема тематического плана для мутаций""" +input ThematicPlanTopicInput { + """Идентификатор темы""" + thematicPlanTopicId: ID! + + """Название темы""" + topicName: String! + + """Номер темы""" + topicNumber: Int! + + """Количество часов на тему""" + topicHours: Int! + + """Уроки по теме""" + lessons: [ThematicPlanTopicLessonInput] +} + +"""Уроки темы тематического плана""" +type ThematicPlanTopicLesson { + """Идентификатор урока в теме""" + thematicPlanTopicLessonId: ID! + + """Наименование урока,""" + lessonName: String! + + """Номер урока""" + lessonNumber: Int! + + """Признак наличия контрольной работы""" + controlWork: Boolean! +} + +"""Модель урока тематического плана для мутации""" +input ThematicPlanTopicLessonInput { + """Идентификатор урока""" + thematicPlanTopicLessonId: ID! + + """Название урока""" + lessonName: String! + + """Номер урока по порядку изучения в теме""" + lessonNumber: Int! + + """Признак контрольной работы""" + controlWork: Boolean! +} + +"""Статус градусника (прогресс ученика по предмету относительно класса)""" +enum ThermometerPMOStatusEnum { + """Отображается, если прогресс ученика ниже прогресса класса""" + RED + + """Отображается, если прогресс ученика равен прогрессу класса""" + GREEN + + """Отображается, если прогресс ученика выше прогресса класса""" + BLUE + + """Отображается, если прогресс класса равен 0""" + GRAY +} + +"""""" +scalar Time + +"""""" +type TimeSlot { + """""" + id: ID! + + """""" + lessonNumber: Int! + + """""" + startTime: Time! + + """""" + endTime: Time! + + """""" + isActive: Boolean! +} + +"""""" +input TimeSlotInput { + """""" + id: ID + + """""" + lessonNumber: Int! + + """""" + startTime: String! + + """""" + endTime: String! + + """""" + isActive: Boolean! + + """ + Заполняется при редактировании слота. + Сдвиг времени таймслота (начала урока) в минутах с учетом знака (отрицательное значение при уменьшении 8:00 -> 7:00 shiftMinutes = -60) + будет удалено после влития EDU-48922 + """ + shiftMinutes: Int +} + +"""""" +type TimeSlotSet { + """""" + id: ID! + + """""" + name: String! + + """""" + lessonLengthType: LessonLengthType! + + """""" + timeSlots: [TimeSlot!]! + + """""" + isActive: Boolean! + + """""" + stageGroupIds: [ID!]! +} + +"""""" +input TimeSlotSetInput { + """""" + id: ID + + """""" + name: String! + + """""" + lessonLengthTypeId: ID! + + """""" + timeSlots: [TimeSlotInput!]! + + """""" + isActive: Boolean! + + """""" + stageGroupIds: [ID!] +} + +"""Типы временных слотов""" +enum TimeSlotTypeEnum { + """Слоты, доступные для записи""" + FREE_TIME + + """Слоты на которые я записан""" + BOOKED_TIME + + """Событие *""" + EVENT +} + +"""Тип элемента таймлайна""" +enum TimelineElementEnum { + """оценка ментора""" + MENTOR_FEEDBACK + + """Стажировка""" + INTERNSHIP + + """p2p""" + PEER_REVIEW + + """авто-проверка""" + AUTOTEST + + """код ревью 1""" + CODE_REVIEW_ROUND_1 + + """код ревью 2""" + CODE_REVIEW_ROUND_2 +} + +"""Статус элемента таймлайна проекта""" +enum TimelineItemStatus { + """Этап пройден""" + SUCCESS + + """Этап провален""" + FAIL + + """Этап доступен""" + CURRENT + + """Этап не доступен""" + DISABLED + + """Этап требует внимания студента""" + ATTENTION +} + +"""Тип элемента таймлайна проекта""" +enum TimelineItemType { + """Этап регистрации""" + REGISTRATION + + """Этап выполнения""" + IN_PROGRESS + + """Этап проверки""" + EVALUATION +} + +"""Расписание для школы по дням""" +type Timetable { + """""" + timetableDays: [TimetableDay!]! + + """""" + isEmpty: Boolean! +} + +"""Расписание по номеру урока за определенный день""" +type TimetableByLessonNumber { + """""" + lessonNumber: Int! + + """""" + stageGroupTimetables: [StageGroupTimetable!]! +} + +"""Расписание по школе за определенный день по всем классам""" +type TimetableDay { + """""" + date: Date! + + """""" + timetableByLessonNumbers: [TimetableByLessonNumber!]! +} + +"""Драфт расписания на неделю""" +type TimetableDraft { + """Драфт расписания по дням недели""" + timetableDraftDays: [TimetableDraftDay!]! + + """Признак, есть ли драфты уроков""" + isEmpty: Boolean! + + """Краткая информация о выполнении задачи на генерацию расписания""" + timetableDraftSummary: TimetableDraftSummary! +} + +"""Драфт расписания по номеру урока за определенный день""" +type TimetableDraftByLessonNumber { + """Номер урока""" + lessonNumber: Int! + + """Драфты уроков групп по классам""" + stageGroupTimetableDrafts: [StageGroupTimetableDraft!]! +} + +"""Изменение драфта расписания""" +input TimetableDraftChangeInput { + """Идентификатор драфта урока""" + lessonDraftId: ID! + + """Порядковый номер дня недели""" + dayOrderNumber: Int + + """Идентификатор интервала времени, в который проводится урок""" + lessonTimeslotId: ID + + """Идентификатор кабинета""" + classroomId: ID +} + +""" +Драфт расписания по школе за определенный порядковый день по всем классам +""" +type TimetableDraftDay { + """Порядковый номер дня недели""" + dayOrderNumber: Int! + + """# Драфт расписания по номеру урока за определенный день""" + timetableDraftByLessonNumbers: [TimetableDraftByLessonNumber!]! +} + +"""Краткая информация о выполнении задач на генерацию расписания""" +type TimetableDraftSummary { + """Идентификатор (edu_power_shard.auto_timetables.auto_timetable_id)""" + timetableDraftId: ID! + + """Статус задачи на генерацию расписания""" + status: TimetableGeneratorStatus! + + """Идентификатор школы""" + schoolId: ID! + + """Академический год""" + academicYearId: ID! + + """Признак можно ли ставить письменные уроки после физ-ры""" + isNoWritingWorkSubjectsAfterPhysicalExercise: Boolean! + + """Название для генерируемого расписания""" + name: String! + + """Классы, для которых генерируется расписание""" + stageGroups: [StageGroupCommonInfo!]! + + """Количество учебных дней в неделе""" + schoolDaysCountPerWeek: Int! + + """Время создания""" + createTime: DateTime! + + """Время обновления""" + modifyTime: DateTime! + + """Объяснение счета""" + scoreExplanation: ScoreExplanation + + """Просматривали ли этот черновик""" + hasBeenViewed: Boolean! +} + +"""Драфт расписания на неделю""" +type TimetableDraftV2 { + """Драфт расписания по классам""" + assignedLessonDraftsByDays: [LessonDraftsByStageGroup!]! + + """Нераспределенные уроки ("подвал")""" + unassignedLessonDraftsByTeachers: [LessonDraftsByTeacher!]! + + """Краткая информация о выполнении задачи на генерацию расписания""" + timetableDraftSummary: TimetableDraftSummary! +} + +"""Статусы выполнения задач по генерации расписания""" +enum TimetableGeneratorStatus { + """В работе (отправлена асинхронная задача на генерацию расписания)""" + IN_PROGRESS + + """Выполнено с ошибкой (во время генерации расписания возникла ошибка)""" + ERROR + + """Выполнено успешно""" + SUCCESS +} + +"""Расписание, в котором уроки сгруппированы по временным промежуткам""" +type TimetableGroupedByPeriods { + """""" + lessonsByPeriods: [LessonsByPeriod!]! +} + +"""Задание от Ученика, требующее проверки Учителем""" +type Todo { + """""" + id: ID! + + """""" + studentId: ID! + + """Пользователь от которого поступил запрос на проверку""" + student: User! + + """Задание которое необходимо проверить""" + task: Task! + + """время отправки учеником запроса на проверку задания""" + checkRequestTime: DateTime! + + """ + Название Класса, в котором учится Ученик, отправивший запрос на проверку + """ + className: String! +} + +"""Ранги текущего студента и ТОП-5 участников коалиции в турнире""" +type Top5AndMeCoalitionTournamentMembers { + """Ранг текущего студента""" + me: CoalitionMemberPowerRank + + """Ранги ТОП-5 участников коалиции в турнире""" + top5: [CoalitionMemberPowerRank!]! +} + +"""""" +type Trajectory { + """""" + trajectoryId: ID + + """""" + name: String! + + """""" + slug: String! + + """""" + created: DateTime + + """""" + lastModified: DateTime +} + +"""Способ применения шаблона траектории Bootcamp на сотрудников""" +enum TrajectoryAssignmentMode { + """Назначение с перекрытием пересекающихся модулей""" + REPLACEMENT + + """Назначение с объединением с текущими траекториями""" + MERGE +} + +"""""" +type TrajectoryMutations { + """""" + createTrajectory(name: String!, slug: String!): Trajectory! + + """""" + updateTrajectory(id: ID!, name: String!): Trajectory! + + """Сохранение шаблона траектории Bootcamp""" + saveTrajectoryTemplate(trajectoryTemplate: TrajectoryTemplateInputModel!): TrajectoryTemplate! + + """Изменение шаблона траектории Bootcamp""" + updateTrajectoryTemplate(trajectoryTemplate: TrajectoryTemplateInputModel!): TrajectoryTemplate! + + """ + Обновление статуса шаблона траектории Bootcamp по идентификатору шаблона + """ + updateTrajectoryTemplateStatus(trajectoryTemplateId: ID!, status: TrajectoryTemplateStatus!): TrajectoryTemplate! + + """Назначить шаблон траектории на студента""" + assignTrajectoryTemplateToStudent(studentTrajectoryTemplateAssignmentInputModel: StudentTrajectoryTemplateAssignmentInputModel!): Boolean + + """ + Изменить плановые даты начала и окончания траектории студента отталкиваясь от новой плановой даты окончания + """ + changePlanDatesTrajectoryStudent(studentId: UUID!, trajectory: String!, newPlanEndDate: Date!): Boolean + + """ + Сохранение маппинга между шаблонами траекторий и внешними идентификаторами профессий/ролей/подразделений + """ + savePulseJobCodeMapper(pulseJobCodeMapperInputModel: PulseJobCodeMapperInputModel!): PulseJobCodeMapper +} + +"""""" +type TrajectoryQueries { + """Получение списка всех траекторий Bootcamp""" + getAllTrajectories: [Trajectory!]! + + """""" + getTrajectoriesByIds(ids: [ID!]!): [Trajectory!]! + + """""" + getTrajectoryById(id: ID!): Trajectory! + + """Получение списка всех шаблонов траекторий Bootcamp""" + findTrajectoryTemplates( + """""" + templateName: String + + """""" + creatorUserIds: [ID] + + """""" + statuses: [TrajectoryTemplateStatus] + + """список идентификаторов модулей""" + goalIds: [ID] + ): [TrajectoryTemplate]! + + """Получение шаблона траектории Bootcamp по его идентификатору""" + getTrajectoryTemplateById(trajectoryTemplateId: ID!): TrajectoryTemplate! + + """Получение статусов шаблонов траекторий Bootcamp""" + getTrajectoryTemplateStatuses: [TrajectoryTemplateStatus]! + + """Получить все доступные шаблоны траекторий Bootcamp по id класса""" + getAccessibleTrajectoryTemplatesByStageGroupId(stageGroupId: ID!): [TrajectoryTemplate!] + + """ + Получение списка идентификаторов студентов с информацией по назначенным траекториям в виде строки разделенной запятой + """ + getAssignedTrajectories(studentIds: [ID!]!): [StudentTrajectorySlug]! + + """ + Получить данные для фильтров для страницы списка задач по назначению шаблонов траектории на студентов + """ + getTemplateAssignmentTaskFilterData: TemplateAssignmentTaskFilterData + + """ + Получить по фильтру список задач на назначение шаблонов траекторий на студентов + """ + filterTemplateAssignmentTasks(templateAssignmentTaskFilter: TemplateAssignmentTaskFilter!): [TemplateAssignmentTask] + + """Получить максимальную плановую дату окончания траектории студента""" + getMaxPlanEndDateByStudentIdAndTrajectory(studentId: UUID!, trajectory: String!): Date + + """ + Получение маппинга между шаблонами траекторий и внешними идентификаторами профессий/ролей/подразделений по фильтру + """ + findPulseJobCodeMapperByFilter(filter: TrajectoryTemplateJobCodeMapperFilter!, page: PagingInput!): [PulseJobCodeMapper]! + + """ + Подсчет количества связей между шаблонами траекторий и внешними идентификаторами профессий/ролей/подразделений по фильтру + """ + countPulseJobCodeMapperByFilter(filter: TrajectoryTemplateJobCodeMapperFilter!): ID! + + """ + Получение списка профессий/ролей/подразделений, полученных из АС Пульс по типу справочника + """ + findPulseJobCodeByJobCodeType(pulseJobCodeType: [PulseJobCodeType!]!): [PulseJobCode]! +} + +"""Шаблон траектории Bootcamp""" +type TrajectoryTemplate { + """Идентификатор (trajectory_templates.trajectory_template_id)""" + trajectoryTemplateId: ID! + + """Название шаблона траектории""" + trajectoryTemplateName: String! + + """Описание шаблона""" + description: String + + """Метка траектории из справочника траекторий (таблица trajectories)""" + trajectorySlug: String + + """Максимальная длительность в днях""" + maxDuration: ID + + """Дата и время создания траектории""" + createTs: DateTime! + + """Идентификатор пользователя создавшего шаблон""" + creatorUserId: UUID! + + """Дата и время последнего изменения шаблона""" + lastModifyTs: DateTime + + """Идентификатор пользователя, который последний изменил шаблон""" + lastModifierUserId: UUID + + """Статус шаблона траектории""" + status: TrajectoryTemplateStatus! + + """Идентификатор класса""" + stageGroupId: ID + + """ФИО""" + creatorFullName: String + + """Электронная почта""" + creatorEmail: String + + """Список предметов шаблона траектории""" + trajectoryTemplateGoals: [TrajectoryTemplateGoal] +} + +"""Модуль по предмету входящему в шаблон траектории Bootcamp""" +type TrajectoryTemplateGoal { + """ + Идентификатор модуля по предмету в шаблоне траектории (trajectory_template_goals.trajectory_template_goal_id) + """ + trajectoryTemplateGoalId: ID! + + """ + Идентификатор шаблона траектории (ссылка на trajectory_templates.trajectory_template_id) + """ + trajectoryTemplateId: ID! + + """Идентификатор модуля""" + goalId: ID! + + """Название модуля""" + goalName: String + + """Целевой уровень учебного модуля""" + goalLevel: Float! + + """Трудоемкость цели в часах""" + laboriousness: Int! + + """Сквозной порядок следования учебного модуля по всей траектории шаблона""" + goalOrderNumber: Int! + + """Признак обязательности""" + isMandatory: Boolean! + + """Идентификатор предмета""" + subjectId: ID! + + """Название предмета""" + subjectName: String + + """Порядковый номер предмета в шаблоне траектории""" + subjectOrderNumber: Int +} + +"""Модуль по предмету входящему в шаблон траектории Bootcamp""" +input TrajectoryTemplateGoalInputModel { + """ + Идентификатор модуля по предмету в шаблоне траектории (trajectory_template_goals.trajectory_template_goal_id) + """ + trajectoryTemplateGoalId: ID + + """ + Идентификатор шаблона траектории (ссылка на trajectory_templates.trajectory_template_id) + """ + trajectoryTemplateId: ID + + """Идентификатор модуля""" + goalId: ID! + + """Целевой уровень учебного модуля""" + goalLevel: Float! + + """Трудоемкость цели в часах""" + laboriousness: Int! + + """Сквозной порядок следования учебного модуля по всей траектории шаблона""" + orderNumber: Int! + + """Признак обязательности""" + isMandatory: Boolean! +} + +"""Шаблон траектории Bootcamp""" +input TrajectoryTemplateInputModel { + """Идентификатор (trajectory_templates.trajectory_template_id)""" + trajectoryTemplateId: ID + + """Название шаблона траектории""" + trajectoryTemplateName: String! + + """Описание шаблона""" + description: String + + """Метка траектории из справочника траекторий (таблица trajectories)""" + trajectorySlug: String! + + """Максимальная длительность в днях""" + maxDuration: ID + + """Дата и время создания шаблона траектории""" + createTs: DateTime + + """Идентификатор пользователя создавшего шаблон""" + creatorUserId: UUID + + """Дата и время последнего изменения шаблона""" + lastModifyTs: DateTime + + """Идентификатор пользователя, который последний изменил шаблон""" + lastModifierUserId: UUID + + """Статус шаблона траектории""" + status: TrajectoryTemplateStatus! + + """Идентификатор класса""" + stageGroupId: ID + + """Список предметов шаблона траектории""" + trajectoryTemplateGoals: [TrajectoryTemplateGoalInputModel] +} + +""" +Фильтр для поиска шаблонов траекторий с учетом связей с профессиями/ролями/подразделениями из АС Пульс +""" +input TrajectoryTemplateJobCodeMapperFilter { + """Список статусов шаблонов траекторий""" + trajectoryTemplateStatuses: [TrajectoryTemplateStatus!]! + + """Список идентификаторов шаблонов""" + trajectoryTemplateIds: [ID]! + + """Список идентификаторов профессий""" + professionIds: [String]! + + """Список идентификаторов ролей""" + sbergileIds: [String]! + + """Список идентификаторов подразделений""" + unitIds: [String]! +} + +"""Статус шаблона траектории Bootcamp""" +enum TrajectoryTemplateStatus { + """Шаблон неактивен и его теперь нельзя использовать""" + DELETED + + """Шаблон до конца не заполнен""" + DRAFT + + """Шаблон полностью заполнен и может использоваться""" + PUBLISHED +} + +""" +Параметры перевода класса/классов из одного учебного года в другой. Переводится один класс в другой (1 -> 1 - класс в класс). Или несколько классов переводится другой класс (М -> 1) +""" +input TransferInput { + """id классов, которые нужно перенести""" + stageGroupIds: [ID!]! + + """имя нового класса""" + targetName: String! + + """id классного руководителя для нового класса""" + formMasterId: ID +} + +"""Результат перевода студентов""" +type TransferResult { + """Успешно переведенные студенты""" + successfullyTransferredStudents: [Student!] + + """Студенты, в ходе перевода которых возникли ошибки""" + studentsWithErrors: [Student!] +} + +"""""" +type TypedUserGroup { + """Идентификатор группы""" + userGroupId: UUID! + + """Идентификатор сущности""" + entityId: String! + + """Типы групп пользователей""" + groupType: UserGroupTypeEnum! +} + +"""Учебно-методический комплекс""" +type UMK { + """""" + id: ID! + + """Название УМК""" + name: String! + + """Идентификатор предмета""" + subjectId: ID! +} + +"""""" +scalar URL + +"""""" +scalar UUID + +"""Фильтр поиска УМК по заданным параметрам""" +input UmkFilterInput { + """фильтр по предметам""" + subjectIds: [ID!] + + """фильтр по параллелям""" + stageIds: [ID!] + + """строка поиска по книгам, входящим в УМК (название / автор)""" + booksSearchText: String +} + +"""""" +type UniversityActiveStudentsCount { + """""" + activeStudentsCount: Int! + + """""" + registeredStudentsCount: Int! +} + +"""""" +input UniversityModulesReportFilter { + """""" + beginDate: Date! + + """""" + endDate: Date! + + """""" + stageGroupIds: [Int]! + + """""" + regions: [String] + + """""" + noNameRegion: Boolean! +} + +"""""" +type UniversityNumberOfStudentsOnStage { + """""" + secondStageStudents: Int! + + """""" + nullStageStudents: Int! + + """""" + finalistsStudents: Int! +} + +"""""" +type UniversityStageGroupModel { + """""" + stageGroupId: Int! + + """""" + stageGroupName: String + + """""" + academicYearId: Int! + + """""" + academicYearName: String! +} + +"""""" +enum UnpublishedChangesType { + """Неопубликованные школы""" + SCHOOLS + + """Проверяющие""" + VERIFIERS + + """Планы""" + PLANS +} + +"""""" +input UpdatePenaltyInput { + """Идентификатор редактируемого штрафа""" + penaltyId: ID! + + """Идентификатор слота отработки штрафа""" + penaltySlotId: ID + + """Продолжительность отработки штрафа""" + duration: Int + + """Идентификатор причины штрафа""" + reasonId: Int + + """Комментарий""" + comment: String +} + +"""""" +type UpdatedJournalFinalStudentMark { + """""" + journalFinalStudentMark: JournalFinalStudentMark + + """""" + yearJournalFinalStudentMark: JournalFinalStudentMark! +} + +"""""" +type User { + """""" + id: ID! + + """""" + avatarUrl: String! + + """""" + firstName: String! + + """""" + middleName: String + + """""" + lastName: String! + + """""" + login: String + + """""" + shortFio: String! + + """Формированное ФИО. Пример, Ульянов Д.""" + birthDate: Date + + """""" + status: UserStatus! + + """""" + email: String + + """""" + emailConfirmed: Boolean + + """""" + mobilePhone: String + + """""" + studentRoles: [StudentRole!] + + """""" + teacherRoles: [TeacherRole!] + + """""" + businessAdminRoles: [BusinessAdminRole!] + + """ + deprecated(reason: "Появились продуктовые БА и школа теперь не обязательна. Использовать businessAdminRolesV2") + """ + businessAdminRolesV2: [BusinessAdminRoleV2!] + + """""" + systemAdminRole: SystemAdminRole + + """""" + parentRoles: [ParentRole!] + + """""" + userFiles: [UserFile] + + """""" + functionalRoles: [FunctionalRole!]! + + """""" + userSchoolPermissions: [UserSchoolPermission!]! + + """""" + userPermissions: [UserPermission!]! + + """""" + mobileNumberEditInfo: MobilePhoneEditInfo! + + """""" + externalSession: Boolean! + + """Идентификатор учителя в рамках той школы, в которой происходит запрос""" + currentSchoolTeacherId: UUID + + """Идентификатор студента в рамках той школы, в которой происходит запрос""" + currentSchoolStudentId: UUID + + """Установленая локаль пользователя""" + locale: String @deprecated(reason: "Have to be used LocaleContextHolder only in context") + + """Дата создания учетной записи""" + userCreationDate: DateTime! + + """Опыт пользователя""" + userExperience: UserExperience + + """диалект для установки локали""" + dialect: String + + """Индивидуальная группа пользователя в сервисе групп""" + groupId: UUID + + """Дата время последнего логина в систему""" + lastLoginTs: DateTime + + """Профили доступа""" + froleSets: [FunctionalRoleSet!]! + + """Привязка профилей доступа пользователя к орг.единицам""" + userFroleSets: [UserFroleSet!]! + + """Краткое наименование кампуса, где сейчас числится пользователь""" + activeSchoolShortName: String +} + +"""Общая информация аккаунта пользователя""" +type UserAccount { + """идентификатор пользователя""" + userId: ID! + + """""" + avatarUrl: String! + + """""" + firstName: String! + + """""" + middleName: String + + """""" + lastName: String! + + """""" + login: String! + + """""" + birthDate: Date + + """текущий статус учетной записи (аккаунта) пользователя""" + userStatus: UserStatus! + + """""" + email: String + + """""" + emailConfirmed: Boolean! + + """""" + mobilePhone: String + + """дата создания учетной записи пользователя""" + userCreationDate: DateTime! + + """Дата время последнего логина в систему""" + lastLoginTs: DateTime +} + +"""Аватары юзера(ученика)""" +type UserAvatar { + """""" + id: ID! + + """Выданный аватар""" + avatar: Avatar! + + """Когда выдан аватар""" + rewardDate: DateTime! +} + +"""История получения стикеров""" +type UserAvatarHistory { + """""" + id: ID! + + """Выданный стикер""" + avatar: Avatar! + + """Когда выдан стикер""" + rewardDate: DateTime! + + """Не null, Если стикер выдан за выполнения таски""" + task: Task + + """Не null, Если стикер выдан за достижения уровня""" + experienceLevel: ExperienceLevel +} + +"""Награда, выданная пользователю""" +type UserAward { + """award_id""" + id: ID! + + """user_id""" + userId: ID! + + """Награда""" + award: Award! + + """Грейд награды""" + points: Int! + + """ + {true} если у ученика нет этой награды - нужно для бейджей на вкладке "Мои бейджи" + """ + isFake: Boolean! + + """дата получения награды учеником""" + lastAwardDate: DateTime +} + +"""История получения наград""" +type UserAwardHistory { + """""" + id: ID! + + """Выданная награда""" + award: Award! + + """Когда выдана награда""" + rewardDate: DateTime! + + """ + Модуль, за закрытие которого получена награда. + Null в случае если награда выдана не за закрытие модуля + """ + module: StudyModule + + """Очков награды стал""" + awardPoints: Int! + + """Очков получено""" + pointsReceived: Int! + + """Пользователь, получивший награду""" + user: User! + + """Пользователь, выдавший награду""" + fromUser: User + + """Комментарий выдавшего награду""" + comment: String + + """За переход на какую параллель выдалась награда""" + stage: Stage +} + +"""Бэйдж юзера(ученика)""" +type UserBadgeAward { + """""" + id: ID! + + """История получения награды [{ level: 1, date: 01.01.2012 }]""" + histories: [UserAwardHistory!]! + + """юзер""" + userId: UUID! + + """Бейдж""" + badge: Badge! + + """ + Награда + [{ level: 1 }] + """ + award: Award! + + """Грейд бейджа""" + points: Int! + + """{true} если у ученика нет этого бейджа""" + isFake: Boolean! + + """дата получения бейджа учеником""" + lastAwardDate: DateTime +} + +"""История получения бейджей""" +type UserBadgeAwardHistory { + """""" + id: ID! + + """Выданный бейдж""" + badge: Badge! + + """Когда выдан бейдж""" + rewardDate: DateTime! + + """ + Модуль, за закрытие которого получен бейдж. + Null в случае если бейдж назначен учеником или учителем, а не системой + """ + module: StudyModule + + """Грейд бейджа стал""" + badgePoints: Int! + + """Грейдов получено""" + pointsReceived: Int! + + """Пользователь, получивший награду""" + userId: ID! + + """Пользователь, выдавший награду""" + fromUserId: ID + + """Комментарий выдавшего награду""" + comment: String +} + +""" +Сущность стикер-фона для истории, с коллекцией стикер-фонов для истории, если студент не собрал все части, url будет null +""" +type UserBgSticker { + """""" + id: ID! + + """ссылка на целый стикер, null, если не собраны все части""" + url: String + + """название стикера""" + name: String! + + """описание стикера""" + description: String! + + """части стикер-фона с датами их получения студентом""" + parts: [UserBgStickerPart] +} + +""" +сущность части стикер-фона для отображения истории получения стикер-фонов без ссылки на основную часть, но с датой получения +""" +type UserBgStickerPart { + """Id части стикер-фона""" + id: ID! + + """Название части стикер-фона""" + name: String! + + """Описание части""" + description: String! + + """Уровень за который выдается этот стикер-фон""" + level: ExperienceLevel! + + """Ссылка на стикер-аватар""" + url: String + + """дата, когда часть была выдана""" + rewardDate: DateTime +} + +"""Инфа по пользователю и его монетам""" +type UserCoins { + """идентификатор пользователя""" + userId: UUID! + + """логин пользователя""" + login: String! + + """аватар пользователя(относительный путь)""" + avatarUrl: String + + """текущее кол-во монет""" + currentAmount: Int! + + """размер последнего начисления\списания""" + lastTransactionAmount: Int + + """дата и время последнего начисления\списания""" + lastTransactionDate: DateTime +} + +"""Один элемент начисления\списания монет""" +type UserCoinsHistoryItemModel { + """Уникальный номер записи в БД""" + id: Int! + + """Тип записи в истории(ачивка, покупка...)""" + itemType: UserCoinsHistoryItemType! + + """Размер начисления\списания""" + amount: Int! + + """Кол-во монет после начисления\списания(поле всегда содержит значение)""" + amountAfter: Int! + + """Дата начисления\списания""" + date: DateTime! + + """Если начисление было от бейджа, то здесь будет его имя, иначе null""" + badgeName: String + + """ + Если начисление было от бейджа, то здесь будет его аватарка, иначе null + """ + badgeAvatar: String + + """ + Если это была покупка в магазине, то здесь будет номер заказа, иначе null + """ + externalTransactionId: Int + + """ + Если это была ручная транзакция, то тут будет логин инициатора, иначе null + """ + giverLogin: String + + """Коммент из БД(тут может быть что угодно в разном формате, даже null)""" + comment: String +} + +"""Тип операции с монетами""" +enum UserCoinsHistoryItemType { + """Монеты получены вместе с наградой""" + BOUNTY_BY_AWARD + + """Монеты потрачены в магазине""" + SHOP_IN_STORE + + """Монеты выданы админом в ручном режиме""" + HAND_REWARD +} + +"""Инфа по пользователю и история изменения его монет""" +type UserCoinsHistoryModel { + """Айди пользователя по которому запрошена история""" + userId: UUID! + + """Логин пользователя по которому запрошена история""" + login: String! + + """Аватар пользователя по которому запрошена история""" + avatarUrl: String + + """Список с начислениями\списаниями""" + histories: [UserCoinsHistoryItemModel]! +} + +"""""" +type UserCredentialsInfo { + """идентификатор пользователя""" + id: ID! + + """установлен пароль""" + passwordConfigured: Boolean! + + """требуется смена пароля, при входе""" + passwordUpdateRequired: Boolean! + + """Требуется ли обязательно включать второй фактор.""" + secondFactorAuthRequired: Boolean! + + """настроен TOTP (например в Google Authenticator)""" + totpConfigured: Boolean! + + """требуется настройка TOTP, при входе""" + totpConfigurationRequired: Boolean! + + """настроена sms аутентификация""" + smsAuthEnabled: Boolean! + + """нужно ли отображать список requiredActions""" + requiredOnLoginActionVisible: Boolean! + + """ + список requiredActions, если список отображать не нужно тогда он будет пустой. + """ + requiredOnLoginActionList: [String!] +} + +"""Комментарий пользователя к заявке на расформирование его команды""" +type UserDisbandRequestComment { + """Логин пользователя""" + login: String + + """Дата/время создания комментария пользователя""" + userDisbandRequestDate: DateTime + + """Комментарий пользователя""" + comment: String +} + +"""Статус заявки пользователя на расформирование его команды""" +enum UserDisbandRequestStatus { + """Заявка пользователя на расформирование команды принята""" + SUBMIT + + """Команда уже расформирована, заявка отклонена""" + TEAM_DISBANDED +} + +"""Драфт пользователя, приглашенного на платформу (недопользователь)""" +type UserDraft { + """Идентификатор драфта пользователя""" + userDraftId: UUID! + + """Дата создания драфта""" + createTs: DateTime! + + """Идентификатор приглашающего пользователя""" + creatorUserId: UUID! + + """Логин, который будет предложен приглашенному пользователю""" + preferredLogin: String! + + """""" + lastName: String + + """""" + firstName: String + + """""" + middleName: String + + """""" + birthdayDate: Date + + """""" + email: String + + """""" + mobilePhone: String + + """Идентификатор пользователя, созданного из этого драфта""" + createdUserId: UUID + + """Определяет истек ли срок действия""" + active: Boolean + + """Описание ролевой модели будущего пользователя""" + userDraftProfiles: [UserDraftProfile!]! + + """""" + stageGroupId: Int +} + +"""""" +input UserDraftInvite { + """User Draft ID""" + userDraftId: UUID + + """Имя""" + firstName: String! + + """Фамилия""" + lastName: String! + + """Отчество""" + middleName: String + + """Е-мэйл""" + email: String! + + """Номер телефона""" + mobilePhone: String! + + """ID школы""" + schoolId: UUID! + + """Предпочтительный логин пользователя""" + preferredLogin: String + + """Дата рождения""" + birthdayDate: Date + + """Название роли""" + userDraftProfiles: [UserDraftProfileInput!] + + """Идентификатор группы (класса)""" + stageGroupId: ID + + """Наименование группы (класса)""" + stageGroupName: String + + """Учебный год""" + academicYearString: String +} + +"""Результат постраничного запроса списка черновиков""" +type UserDraftList { + """информация об черновиках""" + userDrafts: [UserDraft!]! + + """общее количество записей в БД, удовлетворяющих запросу""" + count: Int! +} + +"""""" +type UserDraftOperationsResult { + """userDraftId""" + userDraftId: UUID + + """field email or phone""" + field: String + + """Текущий статус""" + success: Boolean! + + """Сообщение ошибки, если завершилось не успешно""" + errorMessage: String +} + +"""Ролевая модель драфта пользователя""" +type UserDraftProfile { + """ + Наименование Роли из ru\sbt\sber_learning\security\commons\BusinessRoleType + """ + businessRoleType: String! + + """Идентификатор ОУ, в которой пользователь получит роль""" + orgUnitId: UUID! + + """Сущность, нужная для расширения стандартного набора фролей роли""" + profileType: ProfileType +} + +"""""" +input UserDraftProfileInput { + """UUID Роли из ru\sbt\sber_learning\security\commons\BusinessRoleType""" + businessRoleTypeId: UUID! + + """Идентификатор ОУ, в которой пользователь получит роль""" + orgUnitId: UUID! + + """Сущность, нужная для расширения стандартного набора фролей роли""" + profileType: ProfileType +} + +"""Экипировка полученная пользователем""" +type UserEquipmentAward { + """award_id""" + id: ID! + + """ID награды""" + awardId: ID! + + """Шмотка""" + equipment: Equipment! + + """Награда""" + award: Award! + + """Кол-во экипировки""" + points: Int! + + """Надета или нет""" + isDressed: Boolean! + + """Хар-ки шмоток пользователя(с учетом их кол-ва)""" + totalAbilitiesPower: [AbilityPower!]! + + """Получена шмотка или нет""" + isFake: Boolean! + + """Дата получения""" + lastAwardDate: DateTime +} + +"""Уровни и опыт пользователя""" +type UserExperience { + """id пользователя""" + id: ID! + + """id тенанта продуктового уровня""" + tenantId: ID! + + """текущее количество накопленного опыта""" + value: Int! + + """текущее количество опыта, которое можно потратить на стикеры""" + valueToSpent: Int! + + """количество опыта на выбранную дату""" + valueOnDate: UserExperienceHistory + + """текущий уровень""" + level: ExperienceLevel! + + """уведомлен ли пользователь что ему присвоен уровень""" + showed: Boolean! + + """Суммарное значение каждой характеристики пользователя""" + totalAbilitiesPower: [AbilityPower!]! + + """Кол-во печенек""" + cookiesCount: Int! + + """Кол-во монет""" + coinsCount: Int! + + """Очки, используемые для проверки code review в S21. {default = 5}""" + codeReviewPoints: Int! +} + +"""""" +type UserExperienceHistory { + """userId""" + id: ID! + + """id задания""" + taskId: ID + + """id условия за которое выдан опыт""" + expTaskType: Int + + """id уровня""" + expLevelId: ID! + + """сколько опыта стало""" + expValue: Int! + + """задание за которое начислен опыт""" + task: Task + + """дата""" + awardDate: DateTime! + + """уровень на дату""" + level: ExperienceLevel! + + """сколько опыта получено""" + experienceReceived: Int! + + """тип задаения за которое получен опыт""" + experienceTaskType: ExperienceTaskType +} + +"""Полученный опыт, сгрупированный по дням""" +type UserExperienceHistoryDate { + """id пользователя""" + userId: UUID! + + """история изменения опыта""" + history: [ExperienceHistoryDate] +} + +"""Уровни и опыт пользователя в сокращенном виде""" +type UserExperienceShort { + """id пользователя""" + id: ID! + + """текущее количество накопленного опыта""" + value: Int! + + """текущий уровень""" + level: ExperienceLevel! +} + +"""""" +type UserFile { + """""" + id: ID! + + """""" + userId: ID! + + """""" + fileName: String + + """""" + filePath: String + + """""" + fileSize: Int + + """""" + fileExtension: String +} + +"""""" +input UserFileInput { + """""" + fileName: String + + """""" + filePath: String + + """""" + fileSize: Int + + """""" + fileExtension: String +} + +"""Параметры поиска\фильтрации пользователей в админке(старой и новой)""" +input UserFilterInput { + """Строка поиска логина""" + login: String + + """Параллель""" + stageId: ID + + """Класс""" + stageGroupId: ID + + """Уровень опыта""" + experienceLevelId: ID + + """Коалиция пользователей""" + coalitionId: ID +} + +"""""" +type UserFroleSet { + """""" + functionalRoleSet: FunctionalRoleSet! + + """""" + orgUnit: OrganizationUnit + + """""" + product: OrganizationUnit +} + +"""""" +input UserFroleSetInput { + """""" + functionalRoleSetId: UUID! + + """""" + orgUnitId: UUID! +} + +"""Инфа по пользователю и его награждениям""" +type UserGivingsHistoryModel { + """идентификатор пользователя""" + userId: UUID! + + """логин пользователя""" + login: String! + + """аватар пользователя(относительный путь)""" + avatarUrl: String + + """Общее кол-во очков в текущем турнире""" + coalitionPoints: Int! + + """Общее кол-во наград""" + badgeCount: Int! + + """Баланс монет на данный момент""" + coinsCount: Int! + + """История награждений(может быть пагинирована)""" + givings: [Giving!] + + """Общее кол-во награждений за все время""" + givingsTotalCount: Int! +} + +"""""" +type UserGroup { + """Идентификатор группы""" + groupId: ID! + + """Имя группы""" + name: String! + + """Индетификатор школы""" + schoolId: UUID + + """Пользователи""" + users: [User!] +} + +"""Типы групп пользователей""" +enum UserGroupTypeEnum { + """""" + CUSTOM + + """""" + INDIVIDUAL + + """""" + SCHOOL + + """""" + STAGE_GROUP + + """""" + STAGE_SUBJECT_GROUP + + """""" + SYSTEM_ADMINS + + """""" + GLOBAL_USER_GROUP + + """""" + TEAM + + """""" + SCHOOL_FUNCTIONAL_ROLE + + """""" + ROUTING +} + +"""""" +type UserInfo { + """""" + userId: ID! + + """""" + firstName: String! + + """""" + middleName: String + + """""" + lastName: String! +} + +"""""" +input UserInput { + """""" + id: ID + + """""" + avatarUrl: String + + """""" + firstName: String! + + """""" + middleName: String + + """""" + lastName: String! + + """""" + login: String + + """""" + birthDate: String + + """""" + email: String + + """""" + mobilePhone: String + + """""" + status: UserStatus + + """""" + studentRoles: [StudentRoleInput!] + + """""" + teacherRoles: [TeacherRoleInput!] + + """""" + businessAdminRoles: [BusinessAdminRoleInput!] + + """""" + systemAdminRole: SystemAdminRoleInput + + """""" + parentRoles: [ParentRoleInput!] + + """""" + userFiles: [UserFileInput] + + """""" + deletedFilesIds: [ID!] + + """""" + newAndUpdatedFunctionalRoles: [FunctionalRoleInput!]! + + """""" + deletedFunctionalRoles: [FunctionalRoleInput!]! + + """""" + userFroleSets: [UserFroleSetInput!] +} + +"""Инфа по пользователю и его последнем награждении""" +type UserLastGiving { + """идентификатор пользователя""" + userId: UUID! + + """логин пользователя""" + login: String! + + """аватар пользователя(относительный путь)""" + avatarUrl: String + + """последнее награждение(нуль если еще ничем не награждали)""" + lastGiving: Giving +} + +"""""" +type UserLoginSettings { + """""" + deviceId: String + + """""" + rememberMeState: RememberMeState! + + """""" + rememberMeOtherState: RememberMeState! + + """""" + rememberMeOtherCount: Int! +} + +"""""" +input UserLoginSettingsInput { + """""" + rememberMe: Boolean! +} + +"""Награда, которая выдается за закрытие модуля в контексте пользователя""" +type UserModuleAward { + """module_award_id""" + id: ID! + + """Награда""" + award: Award! + + """При каком условие выдается""" + moduleAwardType: ModuleAwardTypeEnum! + + """Сколько наград выдается""" + power: Int! + + """ID модуля, за закрытие которого выдается награда""" + goalId: ID! + + """Получена ли они пользователем""" + isGot: Boolean! +} + +"""""" +type UserMutations { + """ + простановка идентификатора текущего шага онбординга и окончен ли он. Вернет ид онбординга + """ + setCurrentOnboardingStep(onboardingId: ID, currentStepId: ID!, scriptId: ID!, isFinished: Boolean): ID! + + """установка признака прохождения онбординга определенного типа""" + finishOnboarding(onboardingType: OnboardingType!): Boolean + + """сброс признака прохождения онбординга определенного типа""" + resetOnboarding(onboardingType: OnboardingType!): Boolean + + """ + устанавливает текущему пользователю переданный пароль. Так же передается старый пароль для верификации + """ + setPassword(newPassword: String!, oldPassword: String!): User + + """ + устанавливает временные пароли переданным пользователям. Выдает файл pdf в формате base64 + """ + setTemporaryPasswords(userIds: [ID!]!, userLocalDateTime: DateTime!): String! + + """ + Блокировка/разблокировка пользователей (в ШЦП, KC, GitLab). + Возвращает относительный путь на файл с результатом блокировки + """ + changeUsersActiveStatus(userIds: [UUID!]!, userStatus: UserStatus!): String! + + """ + устанавливает временные пароли переданным пользователям. Выдает список связок логинов паролей + """ + setTemporaryPasswordsAndReturnPairs(userIds: [ID!]!): [LogoPass]! + + """редактирование профиля""" + updateProfile(email: String, mobilePhone: String, avatarUrl: String, birthDate: String): User! + + """изменение email, для учителя при первом входе.""" + updateProfileEmail(email: String): User! + + """создание жалобы""" + createComplaint(complaint: ComplaintInput!): Boolean! + + """создание системной ошибки""" + createSystemError(systemError: SystemErrorInput!): Boolean! + + """Оставить отзыв задании (Лайк/Дизлайк)""" + saveFeedback(feedback: FeedbackInput!): Boolean! + + """Удалить отзыв о задании (Лайк/Дизлайк)""" + deleteFeedback(taskId: ID!): Boolean! + + """Оставить сообщение об ошибке в тексте""" + createMisprintReport(misprintReport: MisprintReportInput!): Boolean! + + """Изменение статуса и комментария исполнителя у жалоб""" + updateComplaint(complaintId: ID!, executorComment: String, status: ComplaintAndSystemErrorStatus!): Boolean! + + """Изменение статуса и комментария исполнителя у ошибок""" + updateSystemError(systemErrorId: ID!, executorComment: String, status: ComplaintAndSystemErrorStatus!): Boolean! + + """Изменение статуса и комментария исполнителя у опечаток""" + updateMisprint(misprintId: ID!, executorComment: String, status: ComplaintAndSystemErrorStatus!): Boolean! + + """ + Делает запрос на редактирование телефона, возвращает сколько времени будет действовать код + """ + editMobile(newMobileNumber: String!): Int! + + """Ввод кода отправленного владельцу телефона""" + verifyMobile(newMobileNumber: String!, code: String!): EditMobileNumberVerifyResult! + + """Отправить письмо для подтверждения текущей почты""" + verifyEmail(returnTo: String!, returnToWithPath: String): Boolean! + + """Установка дефолтного контекста роли для входа пользователя""" + setUserRoleDefaultContext(role: ROLES!, schoolId: ID): Boolean! @deprecated + + """""" + setUserRoleDefaultContext_v2(role: ROLES!, orgUnitId: ID): Boolean! + + """Установка локали пользователя""" + setUserLocale(locale: String!): String! + + """Редактирование настроек логина""" + updateUserLoginSettings(settings: UserLoginSettingsInput!): UserLoginSettings! + + """Удаление всех других быстрых входов за исключением текущего""" + clearOtherUserQuickLogins: UserLoginSettings! + + """Редактирование ФИО""" + updateFullName(lastName: String!, firstName: String!, middleName: String): User! + + """Изменение пользовательских настроек отображения темы пользователя""" + switchUserTheme(userId: UUID!, isDarkThemeEnabled: Boolean!): Boolean! +} + +"""""" +type UserNameView { + """""" + id: ID! + + """""" + fullName: String! + + """""" + avatarUrl: String +} + +"""""" +type UserPermission { + """""" + orgUnitId: UUID + + """""" + permissions: [String!]! +} + +"""Все бейджи ученика за достижения""" +type UserPortfolioBadges { + """Идентификатор пользователя (ученика)""" + userId: UUID! + + """Бейджы""" + portfolioBadges: [PortfolioBadge]! +} + +"""""" +type UserPositionOrganization { + """Первичный идентификатор""" + id: UUID! + + """Идентификатор пользователя""" + userId: UUID! + + """Идентификатор должности""" + positionId: UUID! @deprecated(reason: "Use position") + + """Идентификатор образовательного учреждения""" + orgUnitId: UUID! @deprecated(reason: "Use orgUnit") + + """Идентификатор должности""" + position: Position! + + """Идентификатор образовательного учреждения""" + orgUnit: OrgUnit! + + """Наименование образовательного учреждения""" + otherOrgUnitName: String + + """Дата начала обучения/работы""" + beginDate: DateTime + + """Дата окончания обучения/работы""" + endDate: DateTime + + """Дата выпуска учащегося""" + graduateDate: DateTime + + """Описание для классов и групп""" + description: String + + """Признак активности""" + active: Boolean! +} + +"""""" +input UserPositionOrganizationInput { + """Первичный идентификатор""" + id: UUID + + """Идентификатор пользователя""" + userId: UUID! + + """Идентификатор должности""" + positionId: UUID! + + """Идентификатор образовательного учреждения""" + orgUnitId: UUID! + + """Наименование образовательного учреждения""" + otherOrgUnitName: String + + """Первичный идентификатор региона образовательного учреждения""" + regionId: UUID + + """Наименование класса""" + stageGroup: String + + """Дата начала обучения/работы""" + beginDate: DateTime + + """Дата окончания обучения/работы""" + endDate: DateTime + + """Дата выпуска учащегося""" + graduateDate: DateTime + + """Описание для классов и групп""" + description: String + + """Признак активности""" + active: Boolean! +} + +"""""" +type UserProfile { + """Обо мне""" + meta: UserProfileMeta! + + """Аватар(Скин) пользователя""" + avatar: Avatar! + + """Группы гибких навыков""" + softSkills: [UserSoftSkillPercentage!]! + + """Моя экипировка + характеристики персонажа исходя из надетых вещей""" + equipments: [UserEquipmentAward!]! +} + +"""""" +type UserProfileMeta { + """Любимые предметы""" + favoriteSubjects: [FavoriteSubject!]! + + """Любимые виды спорта""" + favoriteSportKinds: [String!]! + + """Любимые форматы заданий""" + favoriteTaskFormats: [String!]! + + """Любимые формы работы""" + favoriteWorkForms: [String!]! + + """Любимые книги""" + favoriteBooks: String! + + """Любимые фильмы""" + favoriteFilms: String! + + """Любимые исполнители""" + favoriteArtists: String! + + """Хобби и увлечения""" + interestsHobbies: String! + + """Кем хочешь стать""" + wantToBecome: String! + + """ + "Обо мне" + """ + aboutMePersonalInfo: String + + """ + "Увлечения" + """ + interests: [String!] + + """Пол""" + gender: String! + + """Показывать год рождения""" + showBirthYear: Boolean + + """Показывать контактную информацию""" + showContacts: Boolean + + """Показывать прогресс-бар""" + showProgressBar: Boolean +} + +"""""" +input UserProfileMetaInput { + """Любимые предметы""" + favoriteSubjectIds: [Int!]! + + """Любимые виды спорта""" + favoriteSportKinds: [String!]! + + """Любимые форматы заданий""" + favoriteTaskFormats: [String!]! + + """Любимые формы работы""" + favoriteWorkForms: [String!]! + + """Любимые книги""" + favoriteBooks: String! + + """Любимые фильмы""" + favoriteFilms: String! + + """Любимые исполнители""" + favoriteArtists: String! + + """Хобби и увлечения""" + interestsHobbies: String! + + """Кем хочешь стать""" + wantToBecome: String! + + """ + "Обо мне" + """ + aboutMePersonalInfo: String + + """ + "Увлечения" + """ + interests: [String!] + + """Пол""" + gender: String + + """Показывать год рождения""" + showBirthYear: Boolean + + """Показывать контактную информацию""" + showContacts: Boolean + + """Показывать прогресс-бар""" + showProgressBar: Boolean +} + +"""""" +type UserProfileMutations { + """""" + setAvatar(avatarId: ID!): Boolean! + + """""" + saveProfileMeta(userProfileMetaInput: UserProfileMetaInput!): Boolean! + + """""" + savePhotoAndAvatar(photoUrl: String, avatarId: ID!): Boolean! + + """ + Обновление URL фотографии пользователя (доступно ученику, учителю, родителю) + """ + savePhoto(photoUrl: String): Boolean! + + """Обновление URL фона профиля пользователя""" + saveCover(coverUrl: String): Boolean! + + """Отображение/сокрытие прогресс-бара пользователя""" + setProgressBarShowed(isShowed: Boolean!): Boolean! +} + +"""""" +type UserProfileQueries { + """""" + getAllFavoriteSubjects: [FavoriteSubject!]! + + """""" + getSoftSkillTypeProgress(softSkillTypeId: ID!): [UserSoftSkillTypeProgress!]! + + """""" + getStudentPublicProfile(studentId: UUID!): StudentPublicProfile! + + """""" + getTeacherPublicProfile(teacherId: UUID!): TeacherPublicProfile! + + """""" + getParentPublicProfile(parentId: UUID!): ParentPublicProfile! + + """""" + getAdminBusinessPublicProfile(adminBusinessId: UUID!): AdminBusinessPublicProfile! + + """Получение публичного профиля пользователя по userID""" + getBasePublicProfile(userId: UUID!): BasePublicProfile! + + """Получить справочник категорий документов портфолио""" + getPortfolioReactions: [PortfolioReaction!]! + + """Получить справочник стандартных фонов профиля""" + getCoverUrls: [ProfileCover!] + + """""" + getProfileCoversUser(userId: UUID): ProfileCoverUser +} + +"""""" +type UserQueries { + """получить данные по текущему пользователю""" + getCurrentUser: User! + + """ + получить список профилей, доступных для назначения на указанную орг.единицу + """ + getAvailableFroleSets(orgUnitId: UUID!): [FunctionalRoleSet!]! + + """ + получить список ролей и школ с названиями по текущему пользователю (для системного админа информации о школах не будет) + """ + getCurrentUserSchoolRoles: [UserSchoolRole!]! @deprecated(reason: "Use getCurrentUserRoles") + + """получить список ролей по текущему пользователю""" + getCurrentUserRoles: [UserRole!]! + + """Справочник причин жалоб""" + getComplaintReasons(filterSystemComplaints: Boolean): [ComplaintReason!]! + + """ + проверяет, превысил ли пользователь лимит на жалобы на задание или матариал каталога + """ + canAddComplaint(taskId: ID, catalogItemId: UUID): Boolean! + + """Запрос списка видов оценки (что понравилось больше всего)""" + getFeedbackSubjects: [FeedbackSubject!]! + + """Запрос статистики по фидбэкам задания""" + getFeedbackStatistics(taskId: ID!): FeedbackStatistics! + + """Просмотр жалоб""" + getComplaints( + """Фильтры по дате создания жалобы""" + dateFrom: DateTime + + """""" + dateTo: DateTime + + """Фильтр по статусу жалоб""" + filterStatus: ComplaintAndSystemErrorStatus + + """Фильтр по темам жалоб""" + filterReasons: [ID!] + + """Строка поиска""" + textSearch: String + + """Параметры пагинации""" + paging: PagingInput + ): [Complaint!]! + + """просмотр системных ошибок""" + getSystemError( + """Фильтры по дате создания жалобы""" + dateFrom: DateTime + + """""" + dateTo: DateTime + + """Фильтр по статусу жалоб""" + filterStatus: ComplaintAndSystemErrorStatus + + """Строка поиска""" + textSearch: String + + """Параметры пагинации""" + paging: PagingInput + ): [SystemError!]! + + """""" + getMisprintReports( + """Фильтры по дате создания жалобы""" + dateFrom: DateTime + + """""" + dateTo: DateTime + + """Фильтр по статусу жалоб""" + filterStatus: ComplaintAndSystemErrorStatus + + """Фильтр по темам опечаток""" + filterReasons: [ID!] + + """Строка поиска""" + textSearch: String + + """Параметры пагинации""" + paging: PagingInput + ): [MisprintReport!]! + + """""" + getMisprintReportsCount( + """Фильтры по дате создания жалобы""" + dateFrom: DateTime + + """""" + dateTo: DateTime + + """Фильтр по статусу жалоб""" + filterStatus: ComplaintAndSystemErrorStatus + + """Фильтр по темам опечаток""" + filterReasons: [ID!] + + """Строка поиска""" + textSearch: String + ): Int! + + """Просмотр рейтингов""" + getFeedbacks( + """Строка поиска""" + textSearch: String + + """ИД задания""" + taskId: ID + + """Параметры пагинации""" + paging: PagingInput + ): [Feedback!]! + + """Просмотр рейтингов текщего пользователя""" + getMyFeedbacks( + """Строка поиска""" + textSearch: String + + """ИД задания""" + taskId: ID + + """Параметры пагинации""" + paging: PagingInput + ): [Feedback!]! + + """Запрос количества жалоб""" + countComplaints( + """Фильтры по дате создания жалобы""" + dateFrom: DateTime + + """""" + dateTo: DateTime + + """Фильтр по статусу жалоб""" + filterStatus: ComplaintAndSystemErrorStatus + + """Фильтр по темам жалоб""" + filterReasons: [ID!] + + """Строка поиска""" + textSearch: String + ): Int! + + """Запрос количества системных ошибок""" + countSystemError( + """Фильтры по дате создания жалобы""" + dateFrom: DateTime + + """""" + dateTo: DateTime + + """Фильтр по статусу жалоб""" + filterStatus: ComplaintAndSystemErrorStatus + + """Строка поиска""" + textSearch: String + ): Int! + + """Запрос количества рейтингов""" + countFeedbacks( + """Строка поиска""" + textSearch: String + + """ИД задания""" + taskId: ID + ): Int! + + """Запрос количества рейтингов текущего пользователя""" + countMyFeedbacks( + """Строка поиска""" + textSearch: String + + """ИД задания""" + taskId: ID + ): Int! + + """запрос классов классного руководителя""" + getFormMasterStageGroups( + """Если userId = null, берется текущий пользователь""" + userId: ID + + """Фильтр по параллелям; если пустой - по всем параллелям""" + filterStages: [ID!]! + + """ + Фильтр по названию класса (stage_groups.stage_group_name); если null - по всем названиям + """ + classTitleTextSearch: String + ): [StageGroup!]! + + """запрос классов классного руководителя""" + getFormMasterStageGroupsWithPerformance( + """Если userId = null, берется текущий пользователь""" + userId: ID + + """Фильтр по параллелям; если пустой - по всем параллелям""" + filterStages: [ID!]! + + """ + Фильтр по названию класса (stage_groups.stage_group_name); если null - по всем названиям + """ + classTitleTextSearch: String + ): [StageGroup!]! @deprecated + + """запрос классов классного руководителя v4""" + getFormMasterStageGroupsWithPerformanceV4( + """Если userId = null, берется текущий пользователь""" + userId: ID + + """Фильтр по параллелям; если пустой - по всем параллелям""" + filterStages: [ID!]! + + """ + Фильтр по названию класса (stage_groups.stage_group_name); если null - по всем названиям + """ + classTitleTextSearch: String + ): [StageGroupAggregated!]! + + """ + Генерация логина пользователя + Генерация логина пользователя + """ + generateUserLogin(user: UserInput): String! @deprecated + + """Просмотр информации о школе""" + getSchool(schoolId: UUID!): SafeSchool! + + """Справочник причин ошибок в тексте""" + getMisprintReasons: [MisprintReason!]! + + """Просмотр сообщений об ошибках в тексте от текущего пользователя""" + getMyMisprintReports: [MisprintReport!]! + + """получение записей аудита""" + getAuditRecords( + """""" + dateFrom: DateTime! + + """""" + dateTo: DateTime! + + """уникальный код события журнала аудита""" + auditOperationCodes: [String!]! + + """""" + action: AuditOperationAction + + """""" + schoolIds: [UUID!]! + + """код типа аудируемой сущности""" + entityTypeCode: String + + """""" + entityId: ID + + """""" + userIds: [UUID!]! + + """текст для полнотекстового поиска""" + textSearch: String + + """""" + paging: PagingInput! + ): AuditRecordsResponse! @deprecated(reason: "Switched to REST API") + + """Получение операций по типу сущности""" + getAuditOperationTypeByEntityType(entityTypeCode: String): [AuditOperationType!]! @deprecated(reason: "Switched to REST API") + + """Получение списка всех аудируемых сущностей""" + getAllAuditableEntityTypes: [AuditableEntityType!]! @deprecated(reason: "Switched to REST API") + + """Просмотр отзыва о задании""" + getFeedback(taskId: ID!): Feedback + + """""" + getAvailableTimeZones: [AvailableTimeZone!]! + + """Получить базовую минимальную информацию по заданию""" + getTaskInfo(taskId: ID!, childUserId: UUID, checkBucketId: ID): TaskInfo! + + """Получить локаль""" + getUserLocale: String + + """Получение всех запрошенных конфигураций.""" + getConfigurations(frontConfigurationInput: [FrontConfigurationInput!]!, entityIdList: [ID!]!): [Configuration!]! @deprecated(reason: "Have to be removed after ui for parameters with tariff. Remove after a new API version is rolled out that takes into account the Product configurations") + + """Получение всех запрошенных конфигураций.""" + getConfigurationsV2(frontConfigurationInput: [FrontConfigurationInput!]!, entityId: String!): [Configuration!]! + + """Получение всех запрошенных конфигураций сгруппированые по тарифам""" + getConfigurationsByTariff(frontConfigurationInput: [FrontConfigurationInput!]!, entityIdList: [ID!]!): [ConfigurationByTariff!]! @deprecated(reason: "Remove after a new API version is rolled out that takes into account the Product configurations") + + """Получение всех запрошенных конфигураций сгруппированые по тарифам""" + getConfigurationsByTariffV2(frontConfigurationInput: [FrontConfigurationInput!]!, entityId: String!): [ConfigurationByTariff!]! + + """Получение всех запрошенных конфигураций c учетом тарифов""" + getConfigurationsTariffCompatible(frontConfigurationInput: [FrontConfigurationInput!]!, entityIdList: [ID!]!): [Configuration!]! @deprecated(reason: "Remove after a new API version is rolled out that takes into account the Product configurations") + + """Получение всех запрошенных конфигураций c учетом тарифов""" + getConfigurationsTariffCompatibleV2(frontConfigurationInput: [FrontConfigurationInput!]!, entityId: String!): [Configuration!]! + + """Получение всех конфигураций для бэкенда""" + getAllBackendConfigurations(entityIdList: [ID!]!): [Configuration!]! @deprecated(reason: "Have to be removed after ui for parameters with tariff. Remove after a new API version is rolled out that takes into account the Product configurations") + + """Получение всех конфигураций для бэкенда""" + getAllBackendConfigurationsV2(entityId: String!): [Configuration!]! + + """Получение всех конфигураций для бэкенда сгрупированные по тарифам""" + getAllBackendConfigurationsByTariff(entityIdList: [ID!]!): [ConfigurationByTariff!]! @deprecated(reason: "Remove after a new API version is rolled out that takes into account the Product configurations") + + """Получение всех конфигураций для бэкенда сгрупированные по тарифам""" + getAllBackendConfigurationsByTariffV2(entityId: String!): [ConfigurationByTariff!]! + + """Получение всех конфигураций для бэкенда с учетом тарифов""" + getAllBackendConfigurationsTariffCompatible(entityIdList: [ID!]!): [Configuration!]! @deprecated(reason: "Remove after a new API version is rolled out that takes into account the Product configurations") + + """Получение всех конфигураций для бэкенда с учетом тарифов""" + getAllBackendConfigurationsTariffCompatibleV2(entityId: String!): [Configuration!]! + + """Запрос для получения всех существующих в системе регоинов""" + getAllRegions: [Region!]! + + """Получение всех стран""" + getAllCountries: [Country!]! + + """ + Возвращает список предметов согласно иерархии разрешений (полный или сокращённый для отображения в фильтрах) + """ + getAllSubjectsByOrgConfiguration: [Subject!] + + """Чтение настроек логина""" + getUserLoginSettings: UserLoginSettings! + + """Получение всех статусов онбординга пользователя по заданному сценарию""" + getUserOnboardingsByScriptId(scriptId: String!): [Onboarding!]! + + """Получение всех статусов онбордингов пользователя по заданным сценариям""" + getUserOnboardingsByScriptIds(scriptIds: [String]!): [Onboarding!]! + + """ + Получение build info основного приложения и дополнительных микросервисов + """ + getApplicationBuildInfos: [ApplicationInfo!]! + + """ + получение тенанта, id которого передан в хэдере запроса "tenantId", для отображения его полей на UI + """ + getTenant: School + + """ + Получение списка всех учебных параллелей с учётом тенанта, в рамках которого работает пользователь + """ + getAllStagesTenantAware: [Stage!]! + + """Получить базовую минимальную информацию о модуле""" + getGoalInfo(goalId: ID!, childUserId: UUID): GoalInfo! + + """Создает токен для обращения на сервер видеоконференций""" + getVCToken(onlineLessonId: ID!, role: VCUserRole!): String! + + """Создает токен для обращения на сервер видеоконференций""" + getVCTokenV2(lessonPlanId: ID!, role: VCUserRole!): String! + + """Возвращает приветственные страницы для праздников на дату""" + getHolidayWelcomePages(date: Date!): [HolidayWelcomePage]! + + """Возвращает баннеры для праздников на дату""" + getHolidayBanners(date: Date!): [HolidayBanner]! + + """Возвращает набор стикеров для праздников на дату""" + getHolidayStickerPacks(date: Date!): [HolidayStickerPackGroup]! + + """ + Возвращает набор ссылок на аватары согласно роли пользователя. Первая запись - аватар по умолчанию для роли + """ + getAvatarUrls: [String!]! + + """ + Получить список орг.единиц определённого типа с фильтрацией по продуктам и строкой поиска + """ + getOrganizationUnits( + """искомый тип орг.единиц""" + type: OrganizationUnitType! + + """фильтрация по id продукта""" + filterProduct: UUID + + """Строка поиска""" + textSearch: String + + """Параметры сортировки""" + sortingFields: [SortingField] + + """Параметры пагинации""" + paging: PagingInput + ): [OrganizationUnit!]! + + """Получить список орг.единиц пользователя""" + getUserOrgUnits( + """id пользователя""" + userId: UUID! + ): [OrganizationUnit!]! + + """Получить орг. структуру по ее uuid""" + getOrganizationUnit( + """id получаемой орг. структуры""" + orgUnitId: UUID! + ): OrganizationUnit! + + """Получить список пользовательских групп по uuid и groupType""" + getTypedUserGroups( + """id пользователя""" + userId: UUID! + + """groupType группы""" + groupType: UserGroupTypeEnum! + ): [TypedUserGroup!]! + + """Получить заданные пользователем настройки отображения по uuid""" + getUserViewSettings(userId: UUID!): UserViewSettings! + + """Получения записи вебинара в Webinar.ru""" + getWebinarRuRecord(lessonPlanId: ID!): WebinarRecord! +} + +"""Место и ряд пользователя в лидерборде""" +type UserRankAndRow { + """Текущее место""" + rank: Int! + + """Текущий ряд""" + row: Int! +} + +"""Ограничение пользователя в Ш21 (Штраф/Отчислен..)""" +type UserRestriction { + """Идентификатор ограничения""" + restrictionId: UUID! + + """Тип ограничения""" + restrictionType: String! + + """Идентификатор ограниченного пользователя""" + userId: UUID! + + """Идентификатор школы в которой применено ограничение""" + schoolId: UUID! + + """Активно ли ограничение""" + isActive: Boolean! + + """Время создания""" + createdTs: DateTime! + + """Время изменения""" + updatedTs: DateTime +} + +"""""" +type UserRole { + """Ид пользователя""" + userId: ID! + + """Ид организационной единицы""" + orgUnitId: ID! + + """Тип организационной единицы""" + orgUnitType: OrganizationUnitType! + + """Полное название орг.единицы""" + orgUnitFullName: String! + + """Короткое название орг.единицы""" + orgUnitShortName: String! + + """Код роли (см ru.sbt.sber_learning.security.commons.BusinessRoleType)""" + roleCode: String! + + """Отображаемое название роли""" + displayableName: String! +} + +"""""" +type UserSchoolPermission { + """""" + schoolId: UUID + + """""" + permissions: [String!]! +} + +"""""" +type UserSchoolRole { + """Ид пользователя""" + userId: ID! + + """Ид школы, отсутствует для кейса Системного админа""" + schoolId: ID + + """Полное название школы, отсутствует для кейса Системного админа""" + schoolFullName: String + + """Короткое название школы, отсутствует для кейса Системного админа""" + schoolShortName: String + + """Признак активности школы, отсутствует для кейса Системного админа""" + schoolIsActive: Boolean + + """регион школы""" + region: Region + + """Код роли (см ru.sbt.sber_learning.security.commons.BusinessRoleType)""" + roleCode: String! + + """Отображаемое название роли""" + displayableName: String! + + """Список данных о прохождении юзером скриптов онбординга""" + onboardings: [Onboarding!]! + + """Тип организации""" + organizationType: OrganizationType +} + +"""""" +enum UserSecondFactorAuthSmsAction { + """Ничего не меняем.""" + NONE + + """Включаем, требование использовать sms аутентификацию при входе.""" + ENABLE + + """Отключаем, требование использовать sms аутентификацию при входе.""" + DISABLE +} + +"""""" +enum UserSecondFactorAuthTotpAction { + """Не меняет настройку TOTP у пользователя.""" + NONE + + """ + Включаем TOTP: + - если у пользователя уже настроен TOTP или требуется конфигурации TOTP после входа, то ничего не делаем. + - если у пользователя не настроен TOTP, то устанавливаем required action "Configure TOTP" + """ + ENABLE + + """ + Выключаем TOTP: + - удаляем настроенный TOTP + - удаляем required action "Configure TOTP" + """ + DISABLE + + """ + Сбрасываем TOTP + - удаляем настроенный TOTP + - устанавливаем required action "Configure TOTP" + """ + RESET +} + +"""Прокаченный софт скил пользователя с процентами""" +type UserSoftSkillPercentage { + """""" + softSkillId: ID! + + """""" + softSkillName: String! + + """Прокачка софт скилла""" + power: Int! + + """Процент от суммы всех прокаченных софт скиллов пользователя""" + percentageOfTotalAmount: Int! + + """Процент от максимального(+ 10%) прокаченного.""" + percentageOfMaximum: Int! +} + +"""Сколько раз была улучшена группа гибкого навыка за период(неделю)""" +type UserSoftSkillTypeProgress { + """ID группы гибких навыков""" + softSkillTypeId: ID! + + """Количество выполненных заданий по данной группе гибких навыков""" + taskCount: Int! + + """Дата начала недели""" + startDate: Date! +} + +"""""" +enum UserStatus { + """Активен""" + ACTIVE + + """Заблокирован""" + BLOCKED +} + +"""""" +input UserSurveyAnswerInput { + """Идентификатор запроса""" + surveyId: UUID! + + """Ответ пользователя. Ожидатеся JSON в формате String""" + answer: String +} + +"""""" +type UserTestAnswer { + """ID ответа""" + id: ID! + + """Тест связанный с ответом""" + testId: ID! + + """ID пользователя""" + userId: ID! + + """Дата ответа""" + answerDate: DateTime! +} + +"""""" +type UserTestAnswerContent { + """ID контента отвта""" + id: ID! + + """Ответ связанный с контентом""" + answerId: ID! + + """Контент ответа в JSON формате""" + content: String! +} + +"""""" +type UserTestContent { + """ID тестового контента""" + id: ID! + + """Тест связанный с контентом""" + testId: ID! + + """Тестовый контент в JSON формате""" + content: String! +} + +"""""" +type UserTestType { + """ID типа теста""" + id: ID! + + """Наименование типа теста""" + name: String! +} + +"""Результаты участия пользователя в турнире""" +type UserTournamentResult { + """ID результата""" + id: UUID! + + """ID пользователя""" + userId: UUID! + + """Набранные баллы пользователя""" + power: Int! + + """Место, которое занял пользователь""" + userRank: Int! + + """Место, которое заняла коалиция пользователя""" + coalitionRank: Int! + + """Название коалиции, занявшей первое место""" + firstCoalitionName: String! + + """Показывался ли результат пользователю""" + isShown: Boolean! + + """Название турнира""" + tournamentName: String! + + """Название коалиции участника""" + coalitionName: String! + + """Ссылка на герб коалиции участника""" + coalitionAvatarUrl: String + + """Дата и время завершения турнира""" + timeClosed: DateTime! +} + +"""""" +type UserTournamentWidget { + """Коалиция пользователя""" + coalitionMember: CoalitionMember + + """ + Результат участия в последнем прошедшем турнире (не удаляется после удаления турнира) + """ + lastTournamentResult: UserTournamentResult + + """Последний турнир пользоввателя""" + lastTournament: GameTournament + + """ + Получить участников моей коалиции + если {page==null} то вернутся первые 20 участников + """ + getMyCoalitionMembers(page: PagingInput): [CoalitionMember!]! +} + +"""Содержит заданные пользователем настройки отображения""" +type UserViewSettings { + """Флаг включена ли темная тема (по умолчанию можно возвращать false)""" + isDarkThemeEnabled: Boolean! +} + +"""""" +type UserWidget { + """""" + id: String! + + """""" + preview: String! + + """""" + title: String! + + """""" + description: String! + + """""" + layoutConfig: String! + + """""" + visual: String! + + """""" + category: String! + + """""" + group: String! +} + +""" +layoutConfig - JSON строка типа "{"a": "a", "b": "b"...}" +""" +input UserWidgetInput { + """""" + id: String! + + """""" + layoutConfig: String! + + """""" + visual: String! + + """""" + category: String! + + """""" + group: String! +} + +"""""" +type UserWithDeletedRole { + """""" + userAccount: UserAccount! + + """Удаленная/деактивированная роль""" + roleName: ROLES! + + """Наименование удаленной/деактивированной роли для отображения""" + displayableRoleName: String! + + """ + Для деактивированных ролей/удаленных действует период в 30 дней, в теч. которого возможно восстановить роль. + Поле показывает сколько дней осталось до окончания срока восстановления. + """ + recoveryDaysLeft: Int! + + """ + Есть ли у роли Родитель активные дети. Используется для определения возможности восстановления роли. + """ + hasParentActiveChildren: Boolean +} + +"""Юзеры(ученики), для выдачи награды""" +type UsersToBadgeAward { + """идентификатор пользователя""" + userId: UUID! + + """логин пользователя""" + login: String! + + """Грейд бейджа""" + points: Int + + """дата получения бейджа учеником""" + lastAwardDate: DateTime +} + +"""""" +type VCLink { + """Комната для проведения видеоконференции""" + room: String! + + """Пароль для входа в видеоконференцию""" + password: String! + + """url для входа в видеоконференцию""" + url: String! +} + +"""""" +enum VCUserRole { + """""" + MEMBER + + """""" + OWNER +} + +"""""" +type ValidatedSchool { + """Модель школы""" + school: School + + """Отчет по полям модели, не прошедших валидацию""" + validationErrors: [FieldValidationError!]! +} + +"""""" +enum ValueType { + """""" + STRING + + """""" + INTEGER + + """""" + FLOAT + + """""" + DATE + + """""" + BOOLEAN + + """Допустиимое значение передается дополнительно""" + ENUM +} + +"""Информация о проверяемых Ш21""" +type VerifiableInfo { + """ + Список проверяемых студентов. Если проект индивидуальный, будет один элемент + """ + verifiableStudents: [VerifiableStudent!]! + + """Информация о команде. Null если проект индивидуальный""" + team: Team +} + +"""Проверяемый студент Ш21""" +type VerifiableStudent { + """Идентификатор пользователя""" + userId: ID! + + """Идентификатор студента""" + studentId: ID! + + """Логин""" + login: String! + + """Аватар""" + avatarUrl: String! + + """Уровень""" + levelCode: Int! + + """Кол-во PRP""" + cookiesCount: Int! + + """Кол-во CRP""" + codeReviewPoints: Int! + + """Является ли студент тим лидом, null если проект индивидуальный""" + isTeamLead: Boolean + + """Школа пользователя""" + school: School! +} + +"""Информацию о проверяемых""" +type VerifiableUsers { + """""" + teamWithMembers: TeamWithMembers + + """""" + user: User +} + +"""Проверяющий программы в группе""" +type VerifierGroupUser { + """идентификатор проверяющего как пользователя платформы""" + userId: UUID! + + """именование проверющего, например ФИО""" + userName: String! +} + +"""""" +enum VideoconferenceType { + """""" + VC_SBERDEVICES + + """""" + OTHER_VIDEOCONFERENCE + + """""" + WEBINAR_RU +} + +"""Всего в регионе""" +type VillageAndCitySchools { + """""" + schoolsCount: Int! + + """""" + teachersCount: Int! + + """""" + studentsCount: Int! + + """""" + villageSchoolsPercent: Int! + + """""" + townSchoolsPercent: Int! + + """""" + villageTeachersPercent: Int! + + """""" + townTeachersPercent: Int! + + """""" + villageStudentsPercent: Int! + + """""" + townStudentsPercent: Int! + + """""" + actualDate: Date! +} + +"""Значение в ячейке журнала посещаемости""" +type VisitJournalCell { + """Идентификатор ячейки журнала посещаемости""" + visitJournalCellId: ID! + + """Идентификатор учителя""" + teacherId: ID + + """Значение в ячейке журнала""" + value: VisitJournalCellValueEnum! + + """Дата занятия""" + lessonId: ID! + + """Дата и время создания ячейки журнала""" + createTime: DateTime + + """Дата и время модификации ячейки журнала""" + lastModifyTime: DateTime + + """Идентификатор пользователя, изменившего ячейку журнала""" + lastModifyUserId: ID + + """комментарий""" + comment: String +} + +"""Типы значений в ячейках журнала посещаемости""" +enum VisitJournalCellValueEnum { + """Нет данных в журнале""" + NOT_PRESENT + + """Не установлено""" + NOT_SET + + """Посетил""" + VISITED + + """Отсутствовал""" + ABSENT + + """Был болен""" + WAS_ILL + + """Опоздал""" + WAS_LATE + + """Отсутствовал по уважительной причине""" + ABSENT_REASONABLE +} + +"""Представление урока для журнала""" +type VisitJournalLesson { + """Идентификатор урока""" + lessonId: ID! + + """Дата урока""" + date: Date! + + """Время начала урока""" + startTime: Time +} + +"""Управление журналом посещения""" +type VisitJournalMutations { + """Редактирование ячейки в журнале посещения""" + editVisitJournalCells(cells: [EditVisitJournalCellInput!]!): Boolean! + + """Создать правило тиражирования журнала посещаемости""" + addVisitJournalRule( + """Идентификатор студента""" + studentId: UUID! + + """Дата начала действия правила""" + startDate: Date! + + """Дата окончания действия правила""" + endDate: Date! + + """Тиражируемое значение ячейки журнала посещаемости""" + value: VisitJournalCellValueEnum! + + """ИД таймслотов на которые должны действовать правила""" + timeSlotIds: [ID!] + + """дни недели когда правила действуют""" + daysOfWeek: [Int!] + + """тиражируемый комментарий""" + comment: String + + """ + если true, то существующие правила в датах между startDate и endDate удаляются. + иначе, при их наличии, правило не создается и вернется false + """ + skipCheck: Boolean + ): Boolean! + + """ + Удаление правила тиражирования посещаемости + true - произошло даление и false - сущность по ИД не найдена + """ + removeVisitJournalRule(visitJournalRuleId: ID!): Boolean! +} + +"""Запросы данных о посещениях из журнала""" +type VisitJournalQueries { + """Поиск ячеек журнала посещений""" + getVisitJournalCellsByFilter(filter: VisitJournalSearchFilter!): StageSubjectGroupVisitJournal! + + """""" + getVisitJournalRules( + """Фильтр по классам""" + stageGroupId: ID! + + """Дата после которой правило дейтсвует""" + startDate: DateTime + + """Дата до которой правило дейтсвует""" + endDate: DateTime + + """Занчение выставляемое правилом тиражирования""" + visitJournalCellValues: [VisitJournalCellValueEnum!] + + """Предмет по которому действует правило тиражирования""" + subjectId: ID + ): [GetVisitJournalRulesResponse] +} + +"""Строка в журнале посещаемости""" +type VisitJournalRow { + """Ученик""" + student: Student! + + """Ячейки в строке""" + cells: [VisitJournalCell!]! +} + +"""""" +type VisitJournalRule { + """Идентификатор правила""" + visitJournalRuleId: ID! + + """Идентификаор ученика""" + studentId: ID! + + """дата с которой правило действует""" + startDate: DateTime! + + """дата до которой правило действует""" + endDate: DateTime! + + """Идетификаторы таймслотов (уроков/звонков)""" + timeslotIds: [ID!] + + """Дни недели в которые действует правило""" + weekDays: [ID!] + + """ + комментарий устанавливающийся в журнал посещаемости при срабатывании правила + """ + comment: String + + """значение правила""" + visitJournalCellValue: VisitJournalCellValueEnum! + + """предметы затрагиваемые правилом""" + subjects: [ID!] +} + +"""Фильтр для поиска данных в журнале посещаемости.""" +input VisitJournalSearchFilter { + """Идентификатор группы по предмету""" + stageSubjectGroupId: ID! + + """Дата начала занятий (включительно)""" + startDate: Date! + + """Дата окончания занятий (включительно)""" + endDate: Date! + + """Идентификаторы учеников""" + studentIds: [ID!] +} + +"""Информация по урокам""" +type VisitLessonInfo { + """Идентификатор урока""" + lessonId: ID! + + """Время начала урока""" + lessonStart: Time! + + """Время конца урока""" + lessonEnd: Time! + + """Название предмета""" + subjectName: String! + + """ФИО учителя""" + teacherName: String! +} + +"""""" +type VisitLessonPeriod { + """Дата начала периода""" + dateFrom: Date! + + """Дата конца периода""" + dateTo: Date! +} + +"""Данные статистики посещаемости""" +type VisitLessonStatData { + """Список студентов""" + studentsStat: [VisitLessonStudentStat!]! + + """Кол-во записей (для пагинации)""" + count: Int! +} + +"""Модель ошибки""" +type VisitLessonStatError { + """Код ошибки""" + errorCode: VisitLessonStatErrorCode! +} + +"""Коды ошибок""" +enum VisitLessonStatErrorCode { + """Некорректный период""" + WRONG_PERIOD + + """Аттестационный период не найден""" + ATTESTATION_PERIOD_NOT_FOUND +} + +"""""" +type VisitLessonStatQueries { + """Запрос статистики посещения уроков""" + getVisitLessonStat(visitLessonStatRequest: VisitLessonStatRequest!): VisitLessonStatResponse! + + """Запрос списка академических годов школы""" + getAcademicYears: [AcademicYear!]! + + """Запрос списка групп (классов)""" + getStageGroups(academicYearId: ID!): [StageGroup!]! + + """Запрос предметов параллели""" + getSubjects(stageGroupId: ID!): [StageSubject!]! + + """Запрос дат аттестационного периода""" + getPeriod(stageGroupId: ID!, stageSubjectId: ID): AttestationPeriodDatesResponse! + + """Запрос информации по урокам""" + getLessonsInfo(lessonIds: [ID!]!): [VisitLessonInfo!]! +} + +"""Параметры запроса статистики""" +input VisitLessonStatRequest { + """Идентификатор группы (класса)""" + stageGroupId: ID! + + """Дата начала периода выгрузки""" + dateFrom: Date! + + """Дата конца периода выгрузки""" + dateTo: Date! + + """Идентификатор предмета параллели""" + stageSubjectId: ID + + """ФИО студента""" + studentName: String + + """Параметры сортировки""" + sorting: [VisitLessonStatSorting!]! + + """Параметры пагинации""" + paging: PagingInput! +} + +"""Статистика посещений""" +type VisitLessonStatResponse { + """Данные""" + data: VisitLessonStatData + + """Успешность операции""" + isSuccess: Boolean! + + """Ошибки""" + error: VisitLessonStatError +} + +"""Параметры сортировки""" +input VisitLessonStatSorting { + """Поле сортировки""" + field: VisitLessonStatSortingField! + + """Направление сортировки""" + asc: Boolean! + + """Порядок сортировки""" + order: Int! +} + +"""Поле сортировки""" +enum VisitLessonStatSortingField { + """ФИ студента""" + STUDENT_NAME + + """Процент пропуска уроков""" + LESSON_MISSED_PERCENTAGE +} + +"""Данные статистики посещаемости по студенту""" +type VisitLessonStudentStat { + """Студент""" + student: StudentWithUser! + + """Суммарная статистика посещаемости""" + overallVisitStat: OverallVisitStat! + + """Посещаемость по дням""" + visitsByDate: [VisitStatByDate!]! +} + +"""Информация о пропущенных уроках на дату""" +type VisitStatByDate { + """Дата""" + date: Date! + + """Пропущено уроков""" + missedLessons: Int! + + """Идентификаторы пропущенных уроков""" + missedLessonIds: [ID!]! + + """Признак того, что студент был в составе класса""" + isStudentExistedInGroup: Boolean! +} + +"""""" +type WebinarRecord { + """""" + convertionStatus: Int + + """""" + recordLink: String +} + +"""Понедельный план в рамках учебного периода по предмету""" +type WeekSubjectPlan { + """Начальная дата недели в рамках учебного периода""" + startDate: DateTime! + + """Конечная дата недели в рамках учебного периода""" + endDate: DateTime! + + """ + Задания, относящиеся к данной неделе (если есть траектории) или пустой список если нет траектории + null - если на данную неделю не запланирован никакой модуль + """ + tasks: [SubjectTask!] + + """Id ближайшего модуля для текущей даты в рамках текущей недели""" + nearestGoalId: ID + + """Есть ли мотивационный блок у модуля с Id = nearestGoalId""" + isMotivationBlockPresent: Boolean +} + +"""""" +type Widget { + """Идентификатор виджета""" + widgetId: ID! + + """Порядковый номер виджета на странице""" + widgetNumber: Int! + + """тело виджета""" + body: WidgetBody! + + """Тип виджета""" + widgetType: WidgetTypeEnum! + + """Тип группы виджетов""" + widgetGroupType: WidgetGroupTypeEnum! + + """Бизнесс тип (используется только если WidgetGroupTypeEnum=Business)""" + businessType: BusinessTypeEnum + + """Css-стили виджета""" + widgetStyle: String + + """Информация для виджета бизнес-типа (WidgetGroupTypeEnum=BUSINESS)""" + businessWidgetInfo: BusinessWidgetInfo + + """Мета-информация о вариативности виджета""" + variationMeta: WidgetVariationMeta +} + +"""""" +type WidgetAnswerBody { + """Возврат ответа на тест""" + testAnswerBody: TestAnswerBody + + """Возврат ответа на простой ответ""" + simpleAnswerBody: SimpleAnswerBody + + """Возврат ответа на развернутый ответ""" + fullAnswerBody: FullAnswerBody + + """Возврат ответа заполнения пропусков""" + fillingGapAnswerBody: FillingGapAnswerBody + + """Возврат ответа сортировки""" + sortableAnswerBody: SortableAnswerBody + + """Возврат ответа соединения линиями""" + lineConnectorAnswerBody: LineConnectorAnswerBody + + """Возврат ответа на виджет код""" + codeAnswerBody: CodeAnswerBody + + """ + Отправляемый ответ на виджет "Таблица (выбор одного)" + """ + matrixAnswerBody: MatrixAnswerBody + + """ + Отправляемый ответ на виджет "Таблица (множественный выбор)" + """ + matrixDropdownAnswerBody: MatrixDropdownAnswerBody + + """ + Отправляемый ответ на виджет "Множественный выбор текста" + """ + multipleTextAnswerBody: MultipleTextAnswerBody + + """Возврат ответа на scorm-задание""" + scormAnswerBody: ScormAnswerBody +} + +"""""" +input WidgetAnswerInput { + """Идентификатор виджета""" + widgetId: UUID! + + """Тип виджета""" + widgetType: ContentWidgetTypeEnum! + + """Ответ на виджет""" + answer: String + + """Файлы, прикрепленные к ответу на виджет""" + files: [FileInput!] +} + +"""""" +type WidgetAudio { + """Заголовок аудио""" + title: String! + + """Описание аудио""" + description: String! + + """Ссылка на аудио""" + audioUrl: String! + + """Название загруженного файла или ссылка""" + audioName: String! + + """UUID файла""" + trackId: ID + + """порядок файла при проигрывании (на будущее)""" + order: Int + + """Обложка трека""" + cover: WidgetAudioCover +} + +"""""" +type WidgetAudioCover { + """Заголовок/краткое описание к обложке""" + title: String + + """Ссылка на обложку""" + imgUrl: String! +} + +"""""" +input WidgetAudioCoverInput { + """Заголовок/краткое описание к обложке""" + title: String + + """Ссылка на обложку""" + imgUrl: String! +} + +"""""" +input WidgetAudioInput { + """Заголовок аудио""" + title: String! + + """Описание аудио""" + description: String! + + """Ссылка на аудио""" + audioUrl: String! + + """Название загруженного файла или ссылка""" + audioName: String! + + """UUID файла""" + trackId: ID + + """порядок файла при проигрывании (на будущее)""" + order: Int + + """Обложка для трека""" + cover: WidgetAudioCoverInput +} + +"""""" +type WidgetAudioList { + """Записи плейлиста""" + tracks: [WidgetAudio!]! + + """Обложка плей-листа""" + cover: WidgetAudioCover +} + +"""""" +input WidgetAudioListInput { + """Записи плейлиста""" + tracks: [WidgetAudioInput!]! + + """Обложка плей-листа""" + cover: WidgetAudioCoverInput +} + +""" +GraphQL не дает использовать union внутри input, поэтому делаем композицию всех типов тела виджетов +""" +type WidgetBody { + """Простой ответ""" + simpleAnswer: WidgetSimpleAnswer + + """Развернутый ответ""" + fullAnswer: WidgetFullAnswer + + """Текст""" + text: WidgetText + + """Тест""" + test: WidgetTest + + """Галерея изображения""" + gallery: WidgetGallery + + """Видео""" + video: WidgetVideo + + """Аудио""" + audio: WidgetAudio + + """Плейлист""" + audioList: WidgetAudioList + + """Соединение линиями""" + lineConnector: WidgetLineConnector + + """Сортировка""" + sortable: WidgetSortable + + """Заполнение пропусков""" + fillingGap: WidgetFillingGap + + """Html-документ для проигрывания внутри страницы""" + iframe: WidgetIframe + + """Фрагмент размеченного текста""" + markdown: WidgetMarkdown + + """Фрагмент кода""" + code: WidgetCode + + """Sbercode""" + sbercodeLink: WidgetSbercodeLink @deprecated(reason: "Интеграция не используется, удалена на стороне sbercode") + + """Таблица (выбор одного)""" + matrix: WidgetMatrix + + """Таблица (множественный выбор)""" + matrixDropdown: WidgetMatrixDropdown + + """Множественный текст""" + multipleText: WidgetMultipleText + + """Кастомный информационный виджет""" + custom: WidgetCustom + + """Интерактивный виджет с заданием в SCORM-пакете""" + scorm: WidgetScorm + + """Виджет документ""" + documentList: WidgetDocList + + """Виджет мини-тест (мини-тест из мотоблока)""" + miniTest: WidgetMiniTest + + """Виджет внешнее задание""" + externalTaskLink: WidgetExternalTaskLink +} + +""" +GraphQL не дает использовать union внутри input, поэтому делаем композицию всех типов тела виджетов +""" +input WidgetBodyCompositionInput { + """Простой ответ""" + simpleAnswer: WidgetSimpleAnswerInput + + """Развернутый ответ""" + fullAnswer: WidgetFullAnswerInput + + """Текст""" + text: WidgetTextInput + + """Тест""" + test: WidgetTestInput + + """Галерея изображения""" + gallery: WidgetGalleryInput + + """Видео""" + video: WidgetVideoInput + + """Аудио""" + audio: WidgetAudioInput + + """Плейлист""" + audioList: WidgetAudioListInput + + """Соединение линиями""" + lineConnector: WidgetLineConnectorInput + + """Сортировка""" + sortable: WidgetSortableInput + + """Заполнение пропусков""" + fillingGap: WidgetFillingGapInput + + """Html-документ для проигрывания внутри страницы""" + iframe: WidgetIframeInput + + """Фрагмент размеченного текста""" + markdown: WidgetMarkdownInput + + """Фрагмент кода""" + code: WidgetCodeInput + + """Sbercode""" + sbercodeInputModel: WidgetSbercodeInput + + """Таблица (выбор одного)""" + matrix: WidgetMatrixInput + + """Таблица (множественный выбор)""" + matrixDropdown: WidgetMatrixDropdownInput + + """Множественный текст""" + multipleText: WidgetMultipleTextInput + + """Кастомный информационный виджет""" + custom: WidgetCustomInput + + """Интерактивный виджет с заданием в SCORM-пакете""" + scorm: WidgetScormInput + + """Информационный виджет о загружаемых документах""" + documentList: WidgetDocListInput + + """Виджет мини-тест (мини-тест из мотоблока)""" + miniTest: WidgetMiniTestInput + + """Виджет внешнее задание""" + externalTaskLink: WidgetExternalTaskLinkInput +} + +"""""" +type WidgetCode { + """Заголовок""" + title: String! + + """Описание""" + description: String! + + """Язык программирования""" + language: CodeWidgetLanguageEnum! + + """Цветовая тема редактора""" + theme: String + + """ + Содержимое блока "код" + """ + code: String! + + """url картинка""" + imgUrl: String +} + +"""""" +input WidgetCodeInput { + """Заголовок""" + title: String! + + """Описание""" + description: String! + + """Язык программирования""" + language: CodeWidgetLanguageEnum! + + """Цветовая тема редактора""" + theme: String + + """ + Содержимое блока "код" + """ + code: String! + + """url картинки""" + imgUrl: String +} + +"""""" +type WidgetCustom { + """Строка с json-структурой, внутри которой хранится информация о виджете""" + json: String +} + +"""""" +input WidgetCustomInput { + """Строка с json-структурой, внутри которой хранится информация о виджете""" + json: String +} + +"""""" +type WidgetDoc { + """Заголовок документа""" + title: String + + """Описание документа""" + description: String + + """Ссылка на документ""" + docLink: String + + """Признак того, что видео загружен с локального диска""" + uploadedFromLocalDevice: Boolean +} + +"""""" +input WidgetDocInput { + """Заголовок документа""" + title: String + + """Описание документа""" + description: String + + """Ссылка на документ""" + docLink: String + + """Признак того, что документ загружен с локального диска""" + uploadedFromLocalDevice: Boolean +} + +"""""" +type WidgetDocList { + """Описание загруженных документов""" + description: String + + """Массив документов, загруженных в задание""" + uploadedDocuments: [WidgetDoc!] +} + +"""""" +input WidgetDocListInput { + """Описание загруженных документов""" + description: String + + """Массив документов, загруженных в задание""" + uploadedDocuments: [WidgetDocInput!] +} + +"""""" +type WidgetExternalTaskLink { + """uri задачи на внешнем ресурсе (без домена)""" + taskUri: String! + + """код внешней системы, предоставляющей задание (например, sbercode)""" + externalSystemCode: String! +} + +"""""" +input WidgetExternalTaskLinkInput { + """uri задачи на внешнем ресурсе (без домена)""" + taskUri: String! + + """код внешней системы, предоставляющей задание (например, sbercode)""" + externalSystemCode: String! +} + +"""""" +type WidgetFillingGap { + """Вопрос""" + title: String! + + """Пояснение к вопросу""" + description: String! + + """Картинка к пояснению""" + imgUrl: String! + + """контент""" + content: String! + + """Настройка учета регистра букв""" + caseSensitive: Boolean! + + """правильные ответы""" + correctAnswers: [WidgetFillingGapAnswerPair!]! + + """Карточки для раскладывания в пропуски""" + cards: [WidgetFillingGapCard!] +} + +"""""" +type WidgetFillingGapAnswerPair { + """Уникальный идентификатор пропуска""" + gapId: ID! + + """Значение для пропуска""" + value: String! + + """Режим заполнения пропуска""" + mode: GapMode + + """Массив вариантов выбора заполнения для режимов DropDown, Drag-and-Drop""" + dropDownChoices: [WidgetFillingGapAnswerPairChoice!] + + """Массив вариантов выбора заполнения для режима Input""" + inputChoices: [String!] +} + +"""""" +type WidgetFillingGapAnswerPairChoice { + """Идентификатор варианта выбора заполнения пропуска""" + gapChoiceId: ID! + + """Значение варианта""" + text: String + + """Правильно/неправильно""" + correct: Boolean! +} + +"""""" +input WidgetFillingGapAnswerPairChoiceInput { + """Идентификатор варианта выбора заполнения пропуска""" + gapChoiceId: ID! + + """Значение варианта""" + text: String + + """Правильно/неправильно""" + correct: Boolean! +} + +"""""" +input WidgetFillingGapAnswerPairInput { + """Уникальный идентификатор пропуска""" + gapId: ID! + + """Значение для пропуска""" + value: String! + + """Режим заполнения пропуска""" + mode: GapMode + + """Массив вариантов выбора заполнения для режимов DropDown, Drag-and-Drop""" + dropDownChoices: [WidgetFillingGapAnswerPairChoiceInput!] + + """Массив вариантов выбора заполнения для режима Input""" + inputChoices: [String!] +} + +"""""" +type WidgetFillingGapCard { + """UUID карточки""" + cardId: ID + + """ID пропуска, в котором находится карточка""" + gapId: ID + + """UUID карточек с идентичным контентом в других пропусках""" + siblingCardIds: [ID!] + + """Содержимое карточки""" + content: String +} + +"""""" +input WidgetFillingGapCardInput { + """UUID карточки""" + cardId: ID + + """ID пропуска, в котором находится карточка""" + gapId: ID + + """UUID карточек с идентичным контентом в других пропусках""" + siblingCardIds: [ID!] + + """Содержимое карточки""" + content: String +} + +"""""" +input WidgetFillingGapInput { + """Вопрос""" + title: String! + + """Пояснение к вопросу""" + description: String! + + """Картинка к пояснению""" + imgUrl: String! + + """контент""" + content: String! + + """Настройка учета регистра букв""" + caseSensitive: Boolean! + + """пропуски""" + correctAnswers: [WidgetFillingGapAnswerPairInput!]! + + """Карточки для раскладывания в пропуски""" + cards: [WidgetFillingGapCardInput!] +} + +"""""" +type WidgetFullAnswer { + """Вопрос""" + title: String! + + """Пояснение к вопросу""" + description: String! + + """Ссылка на изображение к пояснению""" + imgUrl: String! +} + +"""""" +input WidgetFullAnswerInput { + """Вопрос""" + title: String! + + """Пояснение к вопросу""" + description: String! + + """Ссылка на изображение к пояснению""" + imgUrl: String! +} + +"""""" +type WidgetGallery { + """Изображения галереи""" + images: [WidgetGalleryImage!]! + + """Режим отображения галереи (для поддержки режимов мотоблока)""" + mode: String +} + +"""""" +type WidgetGalleryImage { + """UUID изображения""" + imageId: ID! + + """Заголовок изображения""" + title: String! + + """Порядок изображения в галерее""" + order: Int! + + """Описание изображения""" + description: String! + + """Ссылка на файл картинки""" + imgUrl: String! + + """Источник изображения""" + linkSrc: String + + """Параметр, задающий режим отображение изображения в режиме превью""" + imgScale: String +} + +"""""" +input WidgetGalleryImageInput { + """UUID изображения""" + imageId: ID! + + """Заголовок изображения""" + title: String! + + """Порядок изображения в галерее""" + order: Int! + + """Описание изображения""" + description: String! + + """Ссылка на файл картинки""" + imgUrl: String! + + """Источник изображения""" + linkSrc: String + + """Параметр, задающий режим отображение изображения в режиме превью""" + imgScale: String +} + +"""""" +input WidgetGalleryInput { + """Изображения галереи""" + images: [WidgetGalleryImageInput!]! + + """Режим отображения галереи (для поддержки режимов мотоблока)""" + mode: String +} + +"""Тип группы виджетов виджета""" +enum WidgetGroupTypeEnum { + """ + Интерактивный(есть возможность ввести ответ и может быть предусмотрен правильный ответ) + """ + INTERACTIVE + + """Информационный(для информации, без ответа)""" + INFO + + """ + Смешанный(есть возможность ввести ответ, но правильного ответа не предусмотрено) + """ + MIXED + + """Бизнесс-тип с предобработкой на backend""" + BUSINESS + + """Ссылочный тип""" + LINK +} + +"""""" +type WidgetIframe { + """Ссылка на сайт или код