File size: 1,213 Bytes
63bcd5a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | # api/schemas.py
from typing import List, Optional
from pydantic import BaseModel, Field
# =====================================================
# Request Schema
# =====================================================
class AnalyzeRequest(BaseModel):
title: str = Field(..., min_length=3)
description: str = Field(..., min_length=5)
abstract: Optional[str] = ""
features: Optional[List[str]] = []
top_k: Optional[int] = 5
class ChatRequest(BaseModel):
user_id: str = Field("default_user", min_length=1)
message: str = Field(..., min_length=1)
class ChatResponse(BaseModel):
user_id: str
response: str
# =====================================================
# Result Item
# =====================================================
class SimilarProject(BaseModel):
project_id: int
project_title: str
semantic_score: float
feature_score: float
hybrid_score: float
originality_score: float
duplicate_risk: str
# =====================================================
# Response Schema
# =====================================================
class AnalyzeResponse(BaseModel):
extracted_features: List[str]
results: List[SimilarProject]
|