42 lines
1.7 KiB
TypeScript
42 lines
1.7 KiB
TypeScript
|
|
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 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([]),
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
export type LearningTrendResult = z.infer<typeof LearningTrendResultSchema>;
|
|||
|
|
|
|||
|
|
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": ["主动回忆量提升", "薄弱知识点巩固"]
|
|||
|
|
}`;
|