/**
 * GraphQL P4 扩展 Query - 知识图谱 + 学情分析
 *
 * 维护者：ai13（teacher-portal）
 * 关联：graphql.ts P2/P3 扩展、workline.md §3 P4 交付物
 *
 * schema 尚未在 ARB-001 P2 第一版中定义，开发期通过 MSW 拦截返回 mock 响应；
 * 上游就绪后由 ai03 在 teacher-bff.graphql 扩展，届时合并本文件到 graphql.ts。
 *
 * 查询范围（P4）：
 * - KnowledgeGraph：班级/科目知识点图谱（节点 + 前置依赖边）
 * - ClassAnalytics：班级学情分析（均分/及格率/趋势/Top 学生/弱项）
 * - StudentAnalytics：单生学情分析（趋势/弱项/强项/掌握度）
 */

import { gql } from "urql";

// ============ Types（对齐 P4 schema 设计） ============

/** 知识图谱节点（知识点） */
export interface KnowledgeNode {
  id: string;
  name: string;
  subject: string;
  description: string | null;
  masteryLevel: number; // 0-100
}

/** 知识图谱边（前置依赖关系） */
export interface KnowledgeEdge {
  from: string;
  to: string;
  type: "PREREQUISITE" | "RELATED";
}

/** 知识图谱完整结构 */
export interface KnowledgeGraphData {
  nodes: KnowledgeNode[];
  edges: KnowledgeEdge[];
}

/** 单生学情分析 */
export interface StudentAnalytics {
  studentId: string;
  studentName: string;
  avgScore: number;
  trend: number[]; // 最近 5 次成绩趋势
  weakPoints: string[]; // 弱项知识点名称
  strongPoints: string[];
  masteryRate: number; // 掌握度 0-100
}

/** 班级学情分析 */
export interface ClassAnalytics {
  classId: string;
  className: string;
  avgScore: number;
  passRate: number;
  avgTrend: number[];
  topStudents: StudentAnalytics[];
  weakPoints: string[];
}

// ============ P4 Query ============

/** 知识图谱查询（按班级 + 科目过滤） */
export const KnowledgeGraphQuery = gql`
  query KnowledgeGraph($classId: ID, $subject: String) {
    knowledgeGraph(classId: $classId, subject: $subject) {
      nodes {
        id
        name
        subject
        description
        masteryLevel
      }
      edges {
        from
        to
        type
      }
    }
  }
`;

/** 班级学情分析查询 */
export const ClassAnalyticsQuery = gql`
  query ClassAnalytics($classId: ID!) {
    classAnalytics(classId: $classId) {
      classId
      className
      avgScore
      passRate
      avgTrend
      topStudents {
        studentId
        studentName
        avgScore
        trend
        weakPoints
        strongPoints
        masteryRate
      }
      weakPoints
    }
  }
`;

/** 单生学情分析查询 */
export const StudentAnalyticsQuery = gql`
  query StudentAnalytics($studentId: ID!) {
    studentAnalytics(studentId: $studentId) {
      studentId
      studentName
      avgScore
      trend
      weakPoints
      strongPoints
      masteryRate
    }
  }
`;
