Primakov Alexandr Alexandrovich 09cdd06307 init
2025-10-12 23:15:09 +03:00

71 lines
1.5 KiB
Python

"""Review schemas"""
from pydantic import BaseModel, Field
from typing import Optional, List
from datetime import datetime
from app.models.review import ReviewStatusEnum
from app.models.comment import SeverityEnum
class CommentResponse(BaseModel):
"""Schema for comment response"""
id: int
file_path: str
line_number: int
content: str
severity: SeverityEnum
posted: bool
posted_at: Optional[datetime] = None
created_at: datetime
class Config:
from_attributes = True
class PullRequestInfo(BaseModel):
"""Schema for pull request information"""
id: int
pr_number: int
title: str
author: str
source_branch: str
target_branch: str
url: str
class Config:
from_attributes = True
class ReviewResponse(BaseModel):
"""Schema for review response"""
id: int
pull_request_id: int
pull_request: PullRequestInfo
status: ReviewStatusEnum
started_at: datetime
completed_at: Optional[datetime] = None
files_analyzed: int
comments_generated: int
error_message: Optional[str] = None
comments: Optional[List[CommentResponse]] = None
class Config:
from_attributes = True
class ReviewList(BaseModel):
"""Schema for review list response"""
items: List[ReviewResponse]
total: int
class ReviewStats(BaseModel):
"""Schema for review statistics"""
total_reviews: int
active_reviews: int
completed_reviews: int
failed_reviews: int
total_comments: int
avg_comments_per_review: float