iFirst!
This commit is contained in:
38
models.py
Normal file
38
models.py
Normal file
@@ -0,0 +1,38 @@
|
||||
# models.py
|
||||
from typing import List, Dict, Any, Optional, Literal
|
||||
from pydantic import BaseModel, Field
|
||||
from enum import Enum
|
||||
|
||||
class TaskStatus(str, Enum):
|
||||
PENDING = "pending"
|
||||
CODING = "coding"
|
||||
REVIEW = "review"
|
||||
REWORK = "rework"
|
||||
APPROVED = "approved"
|
||||
REJECTED = "rejected"
|
||||
FAILED = "failed"
|
||||
|
||||
class ReviewComment(BaseModel):
|
||||
line: Optional[int] = None
|
||||
file: Optional[str] = None
|
||||
severity: Literal["critical", "major", "minor", "suggestion"] = "major"
|
||||
text: str
|
||||
|
||||
class ReviewResult(BaseModel):
|
||||
status: Literal["approved", "changes_requested", "rejected"]
|
||||
comments: List[ReviewComment] = Field(default_factory=list)
|
||||
summary: str
|
||||
|
||||
class CodeSolution(BaseModel):
|
||||
files: Dict[str, str] = Field(default_factory=dict) # filename -> content
|
||||
description: str
|
||||
tests: Dict[str, str] = Field(default_factory=dict) # test_filename -> content
|
||||
|
||||
class Task(BaseModel):
|
||||
id: str
|
||||
requirement: str
|
||||
status: TaskStatus = TaskStatus.PENDING
|
||||
iteration: int = 0
|
||||
solution: Optional[CodeSolution] = None
|
||||
last_review: Optional[ReviewResult] = None
|
||||
error_log: List[str] = Field(default_factory=list)
|
||||
Reference in New Issue
Block a user