generated from kgod/ai-review-template
feat: initialize resume agent with OfferPai sync
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
"""Contracts for reviewable PDF/DOCX resume imports."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from datetime import datetime
|
||||
from typing import Any, Literal
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field
|
||||
|
||||
|
||||
class ImportEvidence(BaseModel):
|
||||
page: int | None = Field(default=None, ge=1)
|
||||
paragraph: int | None = Field(default=None, ge=1)
|
||||
text: str = Field(min_length=1, max_length=500)
|
||||
|
||||
|
||||
class ImportFieldReview(BaseModel):
|
||||
field_path: str = Field(min_length=1, max_length=256)
|
||||
value: Any
|
||||
confidence: float = Field(ge=0, le=1)
|
||||
status: Literal["needs_review", "verified"] = "needs_review"
|
||||
evidence: list[ImportEvidence] = Field(min_length=1, max_length=10)
|
||||
|
||||
|
||||
class ParsedResumeDraft(BaseModel):
|
||||
model_config = ConfigDict(extra="forbid")
|
||||
|
||||
document: dict[str, Any]
|
||||
field_reviews: list[ImportFieldReview] = Field(default_factory=list)
|
||||
|
||||
|
||||
class ResumeImportView(BaseModel):
|
||||
id: str
|
||||
session_id: str
|
||||
file_name: str
|
||||
mime_type: str
|
||||
size_bytes: int
|
||||
sha256: str
|
||||
status: Literal["awaiting_review", "applied", "failed", "cancelled"]
|
||||
document: dict[str, Any] | None = None
|
||||
field_reviews: list[ImportFieldReview] = Field(default_factory=list)
|
||||
error_code: str | None = None
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
|
||||
|
||||
class ApplyResumeImportRequest(BaseModel):
|
||||
model_config = ConfigDict(extra="forbid")
|
||||
|
||||
expected_revision: int = Field(ge=0)
|
||||
Reference in New Issue
Block a user