학습 분석 메인 페이지 데이터
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
•
피드 완료/미완료 갯수 ?