🌐

학습 분석 GraphQL Schema

학습 분석 메인 페이지 데이터

type Query { """학습 완료율""" weeklyCompleteRate(input: WeeklyStudyReportInput!): WeeklyCompleteRate! """정말 잘했어요!""" weeklyBestStudies(input: WeeklyStudyReportInput!, limit: Int = 10): [StudyModuleInstance]! """조금 아쉬워요.""" weeklyWorstStudies(input: WeeklyStudyReportInput!, limit: Int = 10): [StudyModuleInstance]! """총 학습 분석""" weeklyTotalStudyAnalysis(input: WeeklyStudyReportInput!): WeeklyTotalStudyAnalysis! """일자별 학습""" weeklyStudies(input: WeeklyStudyReportInput!): [WeeklyStudyByDay!]! } input WeeklyStudyReportInput { studentId: ID! groupId: ID! startDate: DateTime! endDate: DateTime! dayOfTheWeeks: [DayOfTheWeek!]! } # 학습 완료율 type WeeklyCompleteRate { completeRate: Float! # 완료율 allFeedCount: Int! # 전체 피드 개수 completedFeedCount: Int! # 완료 피드 개수 incompletedFeedCount: Int! # 미완료 피드 개수 } # 총 학습 분석 type WeeklyTotalStudyAnalysis { correctAnswerRateByDay: [CorrectAnswerRateByDay!]! # 날짜별 정답률 studyUnitCountByDay: [StudyUnitCountByDay!]! #날짜별 학습량(StudyUnit) studyTimeByDay: [StudyTimeByDay!]! # 날짜별 학습 시간 } # 정답률 type CorrectAnswerRateByDay { date: DateTime! correctAnswerRate: Float! correctAnswerRate: Float } # 학습량 type StudyUnitCountByDay { date: DateTime! count: Int! count: Int } # 학습 시간 type StudyTimeByDay { date: DateTime! studyTime: Duration! studyTime: Duration } # 일자별 리포트 type WeeklyStudyByDay { date: DateTime! dayOfTheWeek: DayOfTheWeek! completeRate: Float! studyModuleInstances: [StudyModuleInstance!]! }
GraphQL
복사

일간 분석(총 학습 분석 그래프 호버 시 동작)

"""기존에 존재하는 쿼리""" type Query { studyModuleInstanceAnalysis(input: StudyModuleInstanceAnalysisInput!): StudyModuleInstanceAnalysisConnection! } input StudyModuleInstanceAnalysisInput { startDate: DateTime! endDate: DateTime! groupId: ID! studentId: ID! managerId: ID! limit: Int! = 3 offset: Int! = 0 orderBy: StudyModuleInstanceAnalysisOrders! } type StudyModuleInstanceAnalysisConnection { nodes: [StudyModuleInstanceAnalysis!]! totalCount: Int! } type StudyModuleInstanceAnalysis { averageCorrectAnswerRate: Float correctAnswerRate: Float id: ID! isSent: Boolean! learningDate: DateTime! studyModuleInstance: StudyModuleInstance! }
GraphQL
복사

주간 오답 학습 조회

type Query { weeklyWrongAnswerStudies(input: WeeklyWrongAnswerStudiesInput!): [WeeklyWrongAnswerStudy!]! } input WeeklyWrongAnswerStudiesInput { studentId: ID! groupId: ID! startDate: DateTime! endDate: DateTime! dayOfTheWeeks: [DayOfTheWeek!]! limit: Int = 10 } type WeeklyWrongAnswerStudy { studyActivity: StudyActivity! statistic: [StudyActivityInstanceStatistic!]! } type StudyActivityInstanceStatistic { studyModuleInstance: StudyModuleInstance! studyUnitInstance: StudyUnitInstance! studyActivityInstance: StudyActivityInstance! studyDate: DateTime! learningState: StudyActivityHistoryLearningState! } enum StudyActivityHistoryLearningState { INCORRECT CORRECT FINISHED UNLEARNED } # 기존에 존재하는 Type type StudyActivityInstanceHistory { curriculumType: CurriculumType dueDate: DateTime! learningState: StudyActivityHistoryLearningState! saType: StudyActivityTypes! studyDate: DateTime! solvingTime: Duration! stayTime: Duration! studyActivityInstance: ID! studyActivityInstanceTitle: String! studyUnitInstanceId: ID! studyModuleInstanceId: ID! replicaCurriculumId: ID replicaCurriculumTitle: String }
GraphQL
복사

멘트

best/worst offset 없어도될지?
우려되는점: 하나의 쿼리안에 모든데이터가 있기때문에, 계산이 오래걸리는 필드가 있다면 다른필드가 기다려야 될 수 있음. 분리가 가능하다면(성능상 큰 문제가 없다면), 분리필요할수도.. ?
CouselingPoint → CounselingPoint
피드 완료/미완료 갯수 ?