import { z } from 'zod';

export const TrendItemSchema = z.object({
  metric: z.string().min(1).max(100),
  direction: z.enum(['improving', 'declining', 'stable']),
  currentValue: z.string().max(200),
  previousValue: z.string().max(200).optional(),
  detail: z.string().max(500),
});

export const DailySeriesItemSchema = z.object({
  date: z.string(),
  value: z.number(),
  label: z.string(),
});

export const LearningTrendResultSchema = z.object({
  periodSummary: z.string().min(1).max(2000),
  overallScore: z.number().int().min(0).max(100),
  overallDirection: z.enum(['improving', 'declining', 'stable']),
  trends: z.array(TrendItemSchema).max(10).default([]),
  strengths: z.array(z.string().max(500)).max(10).default([]),
  weaknesses: z.array(z.string().max(500)).max(10).default([]),
  recommendations: z.array(z.string().max(500)).max(10).default([]),
  nextFocusAreas: z.array(z.string().max(200)).max(5).default([]),
  dailySeries: z.array(DailySeriesItemSchema).default([]),
});

export type LearningTrendResult = z.infer<typeof LearningTrendResultSchema>;
export type DailySeriesItem = z.infer<typeof DailySeriesItemSchema>;

export const LEARNING_TREND_OUTPUT_SCHEMA_DESC = `{
  "periodSummary": "过去7天，你的学习时长为320分钟，完成了45次主动回忆和120张复习卡片。整体掌握水平有所提升。",
  "overallScore": 72,
  "overallDirection": "improving",
  "trends": [
    {
      "metric": "主动回忆平均得分",
      "direction": "improving",
      "currentValue": "78分",
      "previousValue": "65分",
      "detail": "本周主动回忆得分持续上升，尤其在后半周表现更好"
    }
  ],
  "strengths": ["学习频率保持稳定", "复习完成率高"],
  "weaknesses": ["主动回忆提交量偏低", "部分知识点反复出错"],
  "recommendations": ["建议每天至少完成3次主动回忆", "重点关注\"X概念\"的复习"],
  "nextFocusAreas": ["主动回忆量提升", "薄弱知识点巩固"]
}`;
