feat(hr): add employee links + fulfillment fields to schemas/models
This commit is contained in:
@@ -19,6 +19,11 @@ class HeadcountRequest(SQLModel, table=True):
|
||||
justification: str | None = None
|
||||
status: str = Field(default="submitted")
|
||||
|
||||
# fulfillment linkage (optional)
|
||||
fulfilled_employee_id: int | None = Field(default=None, foreign_key="employees.id")
|
||||
fulfilled_onboarding_id: int | None = Field(default=None, foreign_key="agent_onboardings.id")
|
||||
fulfilled_at: datetime | None = None
|
||||
|
||||
created_at: datetime = Field(default_factory=datetime.utcnow)
|
||||
|
||||
|
||||
@@ -32,6 +37,9 @@ class EmploymentAction(SQLModel, table=True):
|
||||
action_type: str # praise|warning|pip|termination
|
||||
notes: str | None = None
|
||||
|
||||
# Optional idempotency key to prevent duplicates on retries
|
||||
idempotency_key: str | None = Field(default=None, index=True, unique=True)
|
||||
|
||||
created_at: datetime = Field(default_factory=datetime.utcnow)
|
||||
|
||||
|
||||
@@ -46,6 +54,9 @@ class AgentOnboarding(SQLModel, table=True):
|
||||
tools_json: str | None = None
|
||||
owner_hr_id: int | None = Field(default=None, foreign_key="employees.id")
|
||||
|
||||
# Link to the employee record once created
|
||||
employee_id: int | None = Field(default=None, foreign_key="employees.id")
|
||||
|
||||
status: str = Field(default="planned") # planned|spawning|spawned|verified|blocked
|
||||
spawned_agent_id: str | None = None
|
||||
session_key: str | None = None
|
||||
|
||||
@@ -15,6 +15,8 @@ class HeadcountRequestCreate(SQLModel):
|
||||
class HeadcountRequestUpdate(SQLModel):
|
||||
status: str | None = None
|
||||
justification: str | None = None
|
||||
fulfilled_employee_id: int | None = None
|
||||
fulfilled_onboarding_id: int | None = None
|
||||
|
||||
|
||||
class EmploymentActionCreate(SQLModel):
|
||||
@@ -22,6 +24,7 @@ class EmploymentActionCreate(SQLModel):
|
||||
issued_by_employee_id: int
|
||||
action_type: str
|
||||
notes: str | None = None
|
||||
idempotency_key: str | None = None
|
||||
|
||||
|
||||
class AgentOnboardingCreate(SQLModel):
|
||||
@@ -31,6 +34,7 @@ class AgentOnboardingCreate(SQLModel):
|
||||
cron_interval_ms: int | None = None
|
||||
tools_json: str | None = None
|
||||
owner_hr_id: int | None = None
|
||||
employee_id: int | None = None
|
||||
status: str = "planned"
|
||||
spawned_agent_id: str | None = None
|
||||
session_key: str | None = None
|
||||
@@ -44,6 +48,7 @@ class AgentOnboardingUpdate(SQLModel):
|
||||
cron_interval_ms: int | None = None
|
||||
tools_json: str | None = None
|
||||
owner_hr_id: int | None = None
|
||||
employee_id: int | None = None
|
||||
status: str | None = None
|
||||
spawned_agent_id: str | None = None
|
||||
session_key: str | None = None
|
||||
|
||||
Reference in New Issue
Block a user