// Elective domain GraphQL documents (ARCHITECTURE.md §5.3 契约纪律 / §9.1) // // 拆分原则: // - 全部操作:❌ schema 无 electives / elective(id) 根字段,也无 Mutation 类型 // → 走 MSW 兜底(@contract-pending),等待后端补齐契约 // // 契约工单:docs/architecture/issues/contracts/core-edu_contract.md#elective // 关联:ARCHITECTURE.md §5.3 / §5.4 / §9.1 / §11.4 import { gql } from "@apollo/client"; // ── 假契约查询(@contract-pending)───────────────────────────── // 列表查询:schema 无 electives(...) 根字段 // 页面通过 MSW 兜底获取列表数据,后端补齐后切换 fetcher 指向真实查询 // 契约工单:core-edu_contract.md#electives-list export const GET_ELECTIVES_DOC = gql` query GetElectives($status: String, $q: String, $limit: Int, $offset: Int) { electives(status: $status, q: $q, limit: $limit, offset: $offset) { items { id name description capacity enrolledCount semester gradeLevel subject teacherId teacherName status createdAt updatedAt } total } } `; // ── 单查(@contract-pending)──────────────────────────────────── // schema 无 elective(id) 根字段 → MSW 兜底 // 用于 /shell/teacher/elective/[id]/edit 编辑表单页预填 // 契约工单:core-edu_contract.md#elective-by-id export const GET_ELECTIVE_DOC = gql` query GetElective($id: ID!) { elective(id: $id) { id name description capacity enrolledCount semester gradeLevel subject teacherId teacherName status createdAt updatedAt } } `; // ── 假契约变更(@contract-pending)───────────────────────────── // 创建选修课:schema 无 Mutation 类型 // 页面通过 MSW 兜底提交,后端补齐 mutation 后切换 fetcher // 契约工单:core-edu_contract.md#create-elective export const CREATE_ELECTIVE_DOC = gql` mutation CreateElective($input: CreateElectiveInput!) { createElective(input: $input) { id } } `; // ── 更新选修课 mutation(@contract-pending)──────────────────── // schema 无 Mutation 类型 → MSW 兜底 // 用于 /shell/teacher/elective/[id]/edit 编辑表单页保存 // 契约工单:core-edu_contract.md#update-elective export const UPDATE_ELECTIVE_DOC = gql` mutation UpdateElective($input: UpdateElectiveInput!) { updateElective(input: $input) { id } } `;