feat(portal-shell): extract gql documents to operations layer

M1 Task 3: 从 31 widget 抽取 51 个 gql 文档到 7 个 operations 文件

- universal(7) + sidebar(3) + topbar(3) + teacher(6) + student(8) + parent(4) + admin(20) = 51 DOC

- operations/index.ts barrel 统一出口

- codegen.yml 启用 documents + skipDocumentsValidation(services 子图字段待补齐)

- 生成 types.ts (28KB) + operations.ts (10KB)
This commit is contained in:
SpecialX
2026-07-17 12:37:36 +08:00
parent 7c234947e1
commit f623dcf4a7
10 changed files with 731 additions and 5 deletions

View File

@@ -0,0 +1,93 @@
// Universal domain GraphQL documents
// Extracted from widgets/universal/*/index.tsx
// Related: spec section 2.2
import { gql } from "@apollo/client";
// From widgets/universal/grades-widget
export const GET_GRADES_DOC = gql`
query GetGrades($classId: ID!) {
grades(classId: $classId) {
studentId
score
}
}
`;
// From widgets/universal/homework-widget
export const GET_HOMEWORKS_DOC = gql`
query GetHomeworks($classId: ID!, $limit: Int) {
homeworks(classId: $classId, limit: $limit) {
id
title
dueDate
status
}
}
`;
// From widgets/universal/schedule-widget
export const GET_SCHEDULE_DOC = gql`
query GetSchedule($classId: ID!, $dayOfWeek: Int) {
schedule(classId: $classId, dayOfWeek: $dayOfWeek) {
id
subject
startTime
endTime
teacherName
}
}
`;
// From widgets/universal/attendance-widget
export const GET_ATTENDANCE_DOC = gql`
query GetAttendance($classId: ID!, $termId: ID!) {
attendance(classId: $classId, termId: $termId) {
present
absent
late
total
}
}
`;
// From widgets/universal/exams-widget
export const GET_EXAMS_DOC = gql`
query GetExams($classId: ID!, $limit: Int) {
exams(classId: $classId, limit: $limit) {
id
name
examDate
subject
maxScore
}
}
`;
// From widgets/universal/notifications-widget
export const GET_NOTIFICATIONS_LIST_DOC = gql`
query GetNotificationsList($limit: Int, $offset: Int) {
notifications(limit: $limit, offset: $offset) {
items {
id
title
body
createdAt
type
}
total
}
}
`;
// From widgets/universal/announcements-widget
export const GET_ANNOUNCEMENTS_DOC = gql`
query GetAnnouncements($limit: Int) {
announcements(limit: $limit) {
id
title
body
author
publishedAt
}
}
`;