Spaces:
Sleeping
Sleeping
| """Shared data models for LLM Code Deployment system.""" | |
| from datetime import datetime | |
| from typing import Any | |
| from pydantic import BaseModel, Field, HttpUrl | |
| class Attachment(BaseModel): | |
| """File attachment with data URI.""" | |
| name: str = Field(..., description="Attachment filename") | |
| url: str = Field(..., description="Data URI or URL of the attachment") | |
| class TaskRequest(BaseModel): | |
| """Task request sent to student endpoint.""" | |
| email: str = Field(..., description="Student email ID") | |
| secret: str = Field(..., description="Student-provided secret") | |
| task: str = Field(..., description="Unique task ID") | |
| round: int = Field(..., description="Round index", ge=1) | |
| nonce: str = Field(..., description="Nonce to pass back to evaluation URL") | |
| brief: str = Field(..., description="App brief description") | |
| checks: list[str] = Field(..., description="Evaluation checks") | |
| evaluation_url: str = Field(..., description="URL to send repo details") | |
| attachments: list[Attachment] = Field(default_factory=list, description="File attachments") | |
| class RepoSubmission(BaseModel): | |
| """Repository submission sent to evaluation endpoint.""" | |
| email: str = Field(..., description="Student email ID") | |
| task: str = Field(..., description="Task ID") | |
| round: int = Field(..., description="Round index", ge=1) | |
| nonce: str = Field(..., description="Nonce from request") | |
| repo_url: str = Field(..., description="GitHub repository URL") | |
| commit_sha: str = Field(..., description="Git commit SHA") | |
| pages_url: str = Field(..., description="GitHub Pages URL") | |
| class TaskRecord(BaseModel): | |
| """Task record in database.""" | |
| timestamp: datetime | |
| email: str | |
| task: str | |
| round: int | |
| nonce: str | |
| brief: str | |
| attachments: str # JSON serialized | |
| checks: str # JSON serialized | |
| evaluation_url: str | |
| endpoint: str | |
| statuscode: int | None = None | |
| secret: str | |
| class RepoRecord(BaseModel): | |
| """Repository record in database.""" | |
| timestamp: datetime | |
| email: str | |
| task: str | |
| round: int | |
| nonce: str | |
| repo_url: str | |
| commit_sha: str | |
| pages_url: str | |
| class EvaluationResult(BaseModel): | |
| """Evaluation result record.""" | |
| timestamp: datetime | |
| email: str | |
| task: str | |
| round: int | |
| repo_url: str | |
| commit_sha: str | |
| pages_url: str | |
| check: str | |
| score: float | |
| reason: str | |
| logs: str | |
| class Submission(BaseModel): | |
| """Student submission from CSV.""" | |
| timestamp: datetime | |
| email: str | |
| endpoint: str | |
| secret: str | |