Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Controller ¶
type Controller struct {
// contains filtered or unexported fields
}
Controller handles HTTP requests for feedback endpoints
func NewController ¶
func NewController(service Service, logger *zap.Logger) *Controller
NewController creates a new feedback controller
func (*Controller) SubmitFeedback ¶
func (c *Controller) SubmitFeedback(ctx *gin.Context)
SubmitFeedback godoc @Summary Submit student feedback @Description Process student feedback about task difficulty. @Tags feedback @Accept json @Produce json @Param feedback body FeedbackRequest true "Feedback request" @Success 200 {object} StrategyUpdate @Failure 400 {object} apierror.Response @Failure 500 {object} apierror.Response @Router /api/v1/feedback [post]
type Feedback ¶
type Feedback struct {
ID uuid.UUID `json:"id"`
StudentID uuid.UUID `json:"student_id"`
Message string `json:"message"`
PerceivedDifficulty string `json:"perceived_difficulty"`
StrategySnapshot json.RawMessage `json:"strategy_snapshot"`
CreatedAt time.Time `json:"created_at"`
}
Feedback represents student feedback with perceived difficulty and strategy snapshot
type FeedbackRequest ¶
type FeedbackRequest struct {
StudentID uuid.UUID `json:"student_id" binding:"required"`
TaskID string `json:"task_id" binding:"required"`
Message string `json:"message" binding:"required,max=5000"`
}
FeedbackRequest is the HTTP request DTO for submitting feedback
type Repository ¶
type Repository interface {
Save(ctx context.Context, feedback *Feedback) error
GetLatestByStudent(ctx context.Context, studentID uuid.UUID, limit int) ([]Feedback, error)
}
Repository defines the interface for feedback data access
func NewRepository ¶
func NewRepository(db database.DB) Repository
NewRepository creates a new feedback repository backed by the given database.
type Service ¶
type Service interface {
ProcessFeedback(ctx context.Context, req *FeedbackRequest) (*StrategyUpdate, error)
}
Service defines the interface for feedback processing
func NewService ¶
func NewService( repo Repository, llmClient clients.LLMClient, llmTimeout time.Duration, logger *zap.Logger, ) Service
NewService creates a new feedback service
type StrategyUpdate ¶
type StrategyUpdate struct {
StudentID uuid.UUID `json:"student_id"`
TaskID string `json:"task_id"`
DifficultyAdjustment float64 `json:"difficulty_adjustment"`
TopicWeights map[string]float64 `json:"topic_weights"`
Sentiment string `json:"sentiment"`
StrategySnapshot map[string]interface{} `json:"strategy_snapshot"`
Timestamp time.Time `json:"timestamp"`
}
StrategyUpdate is the response DTO returned after processing feedback