PMFlow/backend/app/services/codegen_core/schemas.py

59 lines
1.3 KiB
Python

"""Pydantic models for code draft generation."""
from __future__ import annotations
from .shared import Any, BaseModel, Dict, Field, List, Optional
class CodeDraftRequest(BaseModel):
"""Code draft generation request."""
signal_id: str
signal_content: str
strategic_analysis: Dict[str, Any]
target_files: List[str]
project_root: str = "."
class FileInfo(BaseModel):
"""Target file metadata and optional content."""
path: str
language: str
exists: bool
content: Optional[str] = None
lines_count: int = 0
class GeneratedFile(BaseModel):
"""Generated file payload."""
path: str
content: str
language: str
diff: str
is_new: bool
review_points: List[str] = []
class CodeDraftResponse(BaseModel):
"""Code draft generation response."""
success: bool
files: List[GeneratedFile]
summary: str
confidence: float = Field(default=0.0, ge=0.0, le=1.0)
warnings: List[str] = Field(default_factory=list)
review_points: List[str] = Field(default_factory=list)
estimated_complexity: str = "low"
generation_time: float = 0.0
metadata: Dict[str, Any] = Field(default_factory=dict)
__all__ = [
"CodeDraftRequest",
"FileInfo",
"GeneratedFile",
"CodeDraftResponse",
]