feat(hr): add employee links + fulfillment fields to schemas/models

This commit is contained in:
Abhimanyu Saharan
2026-02-02 14:35:48 +05:30
parent 9617f1fc3b
commit 63419a26f1
2 changed files with 16 additions and 0 deletions

View File

@@ -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

View File

@@ -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