From 31b14413948e3eddc1411e9c72d2529275babfc7 Mon Sep 17 00:00:00 2001 From: laoboli <1293528695@qq.com> Date: Sun, 3 May 2026 10:09:52 +0800 Subject: [PATCH] fix: lesson plan permission. --- controllers/ai.go | 19 ++++++++++++------- controllers/lesson_plan.go | 24 +++++++++++++++++++++++- 2 files changed, 35 insertions(+), 8 deletions(-) diff --git a/controllers/ai.go b/controllers/ai.go index e08ed5c..da660a4 100644 --- a/controllers/ai.go +++ b/controllers/ai.go @@ -254,9 +254,9 @@ func callAIForAnalysis(prompt string) (*aiAnalysisResult, error) { Content: prompt, }, }, - Temperature: 0.6, - TopP: 0.6, - MaxTokens: 4000, + Temperature: 0.6, + TopP: 0.6, + MaxCompletionTokens: 4000, }, ) if err != nil { @@ -419,6 +419,11 @@ func (tc *TrainingController) streamAIAnalysis(c *gin.Context, prompt string, regionID *uint32, trainID, sourceType, analysisType string, originalFileSize, compressedContentSize int64, uploadTime int64) { + sizeInBytes := len(prompt) + sizeInKB := float64(sizeInBytes) / 1024.0 + + log.Printf("=== 发送给流式 AI 的内容大小: %.2f KB (%d 字节) ===", sizeInKB, sizeInBytes) + c.Writer.Header().Set("Content-Type", "text/event-stream") c.Writer.Header().Set("Cache-Control", "no-cache") c.Writer.Header().Set("Connection", "keep-alive") @@ -448,10 +453,10 @@ func (tc *TrainingController) streamAIAnalysis(c *gin.Context, prompt string, Messages: []openai.ChatCompletionMessage{ {Role: openai.ChatMessageRoleUser, Content: prompt}, }, - Temperature: 0.6, - TopP: 0.6, - MaxTokens: 4000, - Stream: true, + Temperature: 0.6, + TopP: 0.6, + MaxCompletionTokens: 4000, + Stream: true, StreamOptions: &openai.StreamOptions{ IncludeUsage: true, }, diff --git a/controllers/lesson_plan.go b/controllers/lesson_plan.go index ebd1dea..cac4606 100644 --- a/controllers/lesson_plan.go +++ b/controllers/lesson_plan.go @@ -148,8 +148,20 @@ func (lc *LessonPlanController) Upload(c *gin.Context) { } func (lc *LessonPlanController) List(c *gin.Context) { + userID, _, ok := currentUser(c) + if !ok { + writeError(c, http.StatusUnauthorized, "invalid user context") + return + } + role := currentUserRole(c) + + query := lc.DB.Where("file_type = ?", models.AppFileTypeLessonPlan) + if role != models.UserRoleSuperAdmin && role != models.UserRoleRegionAdmin { + query = query.Where("uploader_id = ?", userID) + } + var records []models.AppFile - if err := lc.DB.Where("file_type = ?", models.AppFileTypeLessonPlan).Order("created_at DESC").Find(&records).Error; err != nil { + if err := query.Order("created_at DESC").Find(&records).Error; err != nil { writeError(c, http.StatusInternalServerError, "failed to list lesson plans") return } @@ -157,6 +169,13 @@ func (lc *LessonPlanController) List(c *gin.Context) { } func (lc *LessonPlanController) Page(c *gin.Context) { + userID, _, ok := currentUser(c) + if !ok { + writeError(c, http.StatusUnauthorized, "invalid user context") + return + } + role := currentUserRole(c) + var params lessonPlanPaginationParams if err := c.ShouldBindQuery(¶ms); err != nil { writeError(c, http.StatusBadRequest, err.Error()) @@ -173,6 +192,9 @@ func (lc *LessonPlanController) Page(c *gin.Context) { var total int64 var records []models.AppFile query := lc.DB.Model(&models.AppFile{}).Where("file_type = ?", models.AppFileTypeLessonPlan) + if role != models.UserRoleSuperAdmin && role != models.UserRoleRegionAdmin { + query = query.Where("uploader_id = ?", userID) + } if err := query.Count(&total).Error; err != nil { writeError(c, http.StatusInternalServerError, "failed to count lesson plans") return