This commit is contained in:
Andreas Köpf
2022-12-16 14:09:48 +01:00
parent 8296579895
commit 5ac985e435
3 changed files with 26 additions and 11 deletions
+16 -1
View File
@@ -4,7 +4,7 @@ from typing import Any
from uuid import UUID
from app.api import deps
from app.prompt_repository import PromptRepository, TaskPayload
from app.prompt_repository import PromptRepository, RateSummaryPayload, TaskPayload
from app.schemas import protocol as protocol_schema
from fastapi import APIRouter, Depends, HTTPException
from fastapi.security.api_key import APIKey
@@ -179,6 +179,21 @@ def post_interaction(
f"Frontend reports rating of {interaction.post_id=} with {interaction.rating=} by {interaction.user=}."
)
# check if rating in range
work_package = pr.fetch_workpackage_by_postid(interaction.post_id)
work_payload: RateSummaryPayload = work_package.payload.payload
if (
type(work_payload) != RateSummaryPayload
or interaction.rating < work_payload.scale.min
or interaction.rating > work_payload.scale.max
):
raise HTTPException(
status_code=HTTP_400_BAD_REQUEST,
detail="Invalid response type.",
)
pr.store_rating(interaction)
# here we would store the rating in the database
return protocol_schema.TaskDone(
reply_to_post_id=interaction.post_id,
+1 -1
View File
@@ -14,7 +14,7 @@ payload_type_registry = {}
P = TypeVar("P", bound=BaseModel)
def payload_tpye(cls: Type[P]) -> Type[P]:
def payload_type(cls: Type[P]) -> Type[P]:
payload_type_registry[cls.__name__] = cls
return cls
+9 -9
View File
@@ -4,24 +4,24 @@ from typing import Literal, Optional
from uuid import UUID, uuid4
from app.models import ApiClient, Person, Post, PostReaction, WorkPackage
from app.models.payload_column_type import PayloadContainer, payload_tpye
from app.models.payload_column_type import PayloadContainer, payload_type
from app.schemas import protocol as protocol_schema
from pydantic import BaseModel
from sqlmodel import Session
@payload_tpye
@payload_type
class TaskPayload(BaseModel):
type: str
@payload_tpye
@payload_type
class SummarizationStoryPayload(TaskPayload):
type: Literal["summarize_story"] = "summarize_story"
story: str
@payload_tpye
@payload_type
class RateSummaryPayload(TaskPayload):
type: Literal["rate_summary"] = "rate_summary"
full_text: str
@@ -29,31 +29,31 @@ class RateSummaryPayload(TaskPayload):
scale: protocol_schema.RatingScale
@payload_tpye
@payload_type
class InitialPromptPayload(TaskPayload):
type: Literal["initial_prompt"] = "initial_prompt"
hint: str
@payload_tpye
@payload_type
class UserReplyPayload(TaskPayload):
type: Literal["user_reply"] = "user_reply"
conversation: protocol_schema.Conversation
hint: str | None
@payload_tpye
@payload_type
class AssistantReplyPayload(TaskPayload):
type: Literal["assistant_reply"] = "assistant_reply"
conversation: protocol_schema.Conversation
@payload_tpye
@payload_type
class ReactionPayload(BaseModel):
type: str
@payload_tpye
@payload_type
class RatingReactionPayload(ReactionPayload):
type: Literal["post_rating"] = "post_rating"
rating: str