Commit d338c80a authored by Martin Juhás's avatar Martin Juhás
Browse files

Merge branch '547-update-log-export' into 'main'

Resolve "Update log export"

See merge request inject/backend!485
parents 1d94e4a2 d7711181
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
# Assessment task
# Assessment task

Assess the received email. Respond in formatted text and assess this rubric:

+3 −1
Original line number Diff line number Diff line
@@ -100,7 +100,6 @@ class TeamLogSerializer:
        self.team_llm_eval_path = os.path.join(
            self.team_log_path, "llm-evaluations"
        )
        os.makedirs(self.team_llm_eval_path)

    def serialize_all(
        self, with_emails: bool, with_questionnaires: bool, with_llm: bool
@@ -110,6 +109,9 @@ class TeamLogSerializer:
        self.serialize_categories()
        self.copy_uploaded_files()

        if with_llm:
            os.makedirs(self.team_llm_eval_path, exist_ok=True)

        if with_emails:
            self.serialize_emails()
            if with_llm:
+3 −0
Original line number Diff line number Diff line
@@ -42,6 +42,8 @@ class ExerciseSerializer(ModelSerializer):
            "exercise_id",
            "states",
            "definition_id",
            "llm",
            "sandbox",
        ]


@@ -81,6 +83,7 @@ class TeamSerializer(ModelSerializer):
            "achieved_score",
            "total_score",
            "exercise_state_id",
            "show_overview",
        ]

    def get_users(self, obj):
+24 −1
Original line number Diff line number Diff line
@@ -99,6 +99,7 @@ class MilestoneSerializer(ModelSerializer):
            "file_names",
            "initial_state",
            "score",
            "final",
        ]


@@ -140,6 +141,7 @@ class ToolSerializer(ModelSerializer):
class EmailAddressSerializer(ModelSerializer):
    email_address_id = IntegerField(source="id")
    control = ControlSerializer()
    assessment_id = IntegerField(source="llm_assessment_id")

    class Meta:
        model = EmailAddress
@@ -150,6 +152,7 @@ class EmailAddressSerializer(ModelSerializer):
            "team_visible",
            "organization",
            "control",
            "assessment_id",
        ]


@@ -239,11 +242,13 @@ class MultipleChoiceQuestionSerializer(ModelSerializer):

class FreeFormQuestionSerializer(ModelSerializer):
    related_milestone_ids = ListField(source="related_milestones")
    assessment_id = IntegerField(source="llm_assessment_id")

    class Meta:
        model = FreeFormQuestion
        fields = [
            "related_milestone_ids",
            "assessment_id",
        ]


@@ -313,8 +318,10 @@ class QuestionnaireSerializer(ModelSerializer):
            "name",
            "content",
            "time",
            "delay",
            "control",
            "repeatable",
            "show_feedback",
            "questions",
        ]

@@ -324,6 +331,16 @@ class LearningActivitySerializer(ModelSerializer):
    milestone_ids = PrimaryKeyRelatedField(
        many=True, read_only=True, source="milestones"
    )
    email_address_ids = PrimaryKeyRelatedField(
        many=True, read_only=True, source="addresses"
    )
    inject_ids = PrimaryKeyRelatedField(
        many=True, read_only=True, source="injects"
    )
    tool_ids = PrimaryKeyRelatedField(many=True, read_only=True, source="tools")
    questionnaire_ids = PrimaryKeyRelatedField(
        many=True, read_only=True, source="questionnaires"
    )
    total_score = SerializerMethodField()

    class Meta:
@@ -334,6 +351,10 @@ class LearningActivitySerializer(ModelSerializer):
            "description",
            "tags",
            "milestone_ids",
            "email_address_ids",
            "inject_ids",
            "tool_ids",
            "questionnaire_ids",
            "total_score",
        ]

@@ -362,6 +383,8 @@ class LearningObjectiveSerializer(ModelSerializer):


class LLMAssessmentSerializer(ModelSerializer):
    assessment_id = IntegerField(source="id")

    class Meta:
        model = LLMAssessment
        fields = ["id", "persona", "assessment"]
        fields = ["assessment_id", "persona", "assessment"]
+21 −15
Original line number Diff line number Diff line
from typing import Dict, Type

from rest_framework.fields import CharField
from rest_framework.relations import RelatedField
from rest_framework.relations import RelatedField, PrimaryKeyRelatedField
from rest_framework.serializers import (
    ModelSerializer,
    IntegerField,
@@ -114,10 +114,11 @@ class QuestionnaireAnswerSerializer(ModelSerializer):

class SubmissionDetailsSerializer(ModelSerializer):
    answers = QuestionnaireAnswerSerializer(many=True)
    correct = CharField(source="get_correct_display")

    class Meta:
        model = QuestionnaireSubmission
        fields = ["answers", "attempt", "accepted"]
        fields = ["answers", "attempt", "accepted", "correct"]


class ConfirmationDetailsSerializer(ModelSerializer):
@@ -201,6 +202,12 @@ class ActionLogSerializer(ModelSerializer):
    type = CharField(source="get_type_display")
    details = DetailsRelatedField(read_only=True)
    instructor_comment = InstructorCommentSerializer()
    previous_log_ids = PrimaryKeyRelatedField(
        many=True, read_only=True, source="previous_logs"
    )
    next_log_ids = PrimaryKeyRelatedField(
        many=True, read_only=True, source="next_logs"
    )

    class Meta:
        model = ActionLog
@@ -211,9 +218,9 @@ class ActionLogSerializer(ModelSerializer):
            "details",
            "channel_id",
            "instructor_comment",
            "previous_log_id",
            "previous_log_ids",
            "user_id",
            "next_logs",
            "next_log_ids",
            "in_exercise_time",
        ]

@@ -239,14 +246,12 @@ class TeamQuestionnaireStateSerializer(ModelSerializer):


class LLMEmailSuggestionSerializer(ModelSerializer):
    thread_id = IntegerField(source="thread.id")
    trigger_email_id = IntegerField(source="trigger_email.id")
    email_participant_id = IntegerField(source="email_participant.id")
    suggestion_id = IntegerField(source="id")

    class Meta:
        model = LLMEmailSuggestion
        fields = [
            "id",
            "suggestion_id",
            "thread_id",
            "trigger_email_id",
            "email_participant_id",
@@ -256,32 +261,33 @@ class LLMEmailSuggestionSerializer(ModelSerializer):


class LLMFreeFormEvaluationSerializer(ModelSerializer):
    evaluation_id = IntegerField(source="id")
    submission_id = IntegerField(source="questionnaire_answer.submission_id")
    question_id = IntegerField(source="questionnaire_answer.question_id")
    assessment_definition_id = IntegerField(source="assessment_definition.id")
    assessment_id = IntegerField(source="assessment_definition_id")

    class Meta:
        model = LLMFreeFormEvaluation
        fields = [
            "id",
            "evaluation_id",
            "submission_id",
            "question_id",
            "assessment_definition_id",
            "assessment_id",
            "response",
            "created_at",
        ]


class LLMEmailEvaluationSerializer(ModelSerializer):
    action_log_id = IntegerField(source="action_log.id")
    assessment_definition_id = IntegerField(source="assessment_definition.id")
    evaluation_id = IntegerField(source="id")
    assessment_id = IntegerField(source="assessment_definition_id")

    class Meta:
        model = LLMEmailEvaluation
        fields = [
            "id",
            "evaluation_id",
            "action_log_id",
            "assessment_definition_id",
            "assessment_id",
            "response",
            "created_at",
        ]