Files
ai_english/serve/internal/model/ai_models.go
2025-11-17 13:39:05 +08:00

99 lines
4.1 KiB
Go

package model
import "time"
// WritingCorrection 写作批改结果
type WritingCorrection struct {
ID uint `json:"id" gorm:"primaryKey"`
UserID uint `json:"user_id"`
Content string `json:"content"`
TaskType string `json:"task_type"`
OverallScore int `json:"overall_score"`
GrammarScore int `json:"grammar_score"`
VocabularyScore int `json:"vocabulary_score"`
StructureScore int `json:"structure_score"`
ContentScore int `json:"content_score"`
Corrections []WritingError `json:"corrections"`
Suggestions []string `json:"suggestions" gorm:"type:json"`
Strengths []string `json:"strengths" gorm:"type:json"`
Weaknesses []string `json:"weaknesses" gorm:"type:json"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
// WritingError 写作错误
type WritingError struct {
ID uint `json:"id" gorm:"primaryKey"`
CorrectionID uint `json:"correction_id"`
Original string `json:"original"`
Corrected string `json:"corrected"`
Explanation string `json:"explanation"`
ErrorType string `json:"error_type"` // grammar, vocabulary, structure, etc.
}
// SpeakingEvaluation 口语评估结果
type SpeakingEvaluation struct {
ID uint `json:"id" gorm:"primaryKey"`
UserID uint `json:"user_id"`
AudioText string `json:"audio_text"`
Prompt string `json:"prompt"`
OverallScore int `json:"overall_score"`
PronunciationScore int `json:"pronunciation_score"`
FluencyScore int `json:"fluency_score"`
GrammarScore int `json:"grammar_score"`
VocabularyScore int `json:"vocabulary_score"`
Feedback string `json:"feedback"`
Strengths []string `json:"strengths" gorm:"type:json"`
Improvements []string `json:"improvements" gorm:"type:json"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
// AIRecommendation AI推荐
type AIRecommendation struct {
ID uint `json:"id" gorm:"primaryKey"`
UserID uint `json:"user_id"`
UserLevel string `json:"user_level"`
RecommendedTopics []string `json:"recommended_topics" gorm:"type:json"`
DifficultyLevel string `json:"difficulty_level"`
StudyPlan []string `json:"study_plan" gorm:"type:json"`
FocusAreas []string `json:"focus_areas" gorm:"type:json"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
// Exercise 练习题
type Exercise struct {
ID uint `json:"id" gorm:"primaryKey"`
Title string `json:"title"`
Instructions string `json:"instructions"`
Content string `json:"content"`
ExerciseType string `json:"exercise_type"`
Questions []Question `json:"questions"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
// Question 问题
type Question struct {
ID uint `json:"id" gorm:"primaryKey"`
ExerciseID uint `json:"exercise_id"`
Question string `json:"question"`
Options []string `json:"options" gorm:"type:json"`
CorrectAnswer string `json:"correct_answer"`
Explanation string `json:"explanation"`
}
// AIRequest AI请求记录
type AIRequest struct {
ID uint `json:"id" gorm:"primaryKey"`
UserID uint `json:"user_id"`
RequestType string `json:"request_type"` // writing_correction, speaking_evaluation, recommendation, exercise_generation
Prompt string `json:"prompt"`
Response string `json:"response"`
TokensUsed int `json:"tokens_used"`
Cost float64 `json:"cost"`
Status string `json:"status"` // success, error, pending
ErrorMsg string `json:"error_msg,omitempty"`
CreatedAt time.Time `json:"created_at"`
}