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
|
justification: str | None = None
|
||||||
status: str = Field(default="submitted")
|
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)
|
created_at: datetime = Field(default_factory=datetime.utcnow)
|
||||||
|
|
||||||
|
|
||||||
@@ -32,6 +37,9 @@ class EmploymentAction(SQLModel, table=True):
|
|||||||
action_type: str # praise|warning|pip|termination
|
action_type: str # praise|warning|pip|termination
|
||||||
notes: str | None = None
|
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)
|
created_at: datetime = Field(default_factory=datetime.utcnow)
|
||||||
|
|
||||||
|
|
||||||
@@ -46,6 +54,9 @@ class AgentOnboarding(SQLModel, table=True):
|
|||||||
tools_json: str | None = None
|
tools_json: str | None = None
|
||||||
owner_hr_id: int | None = Field(default=None, foreign_key="employees.id")
|
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
|
status: str = Field(default="planned") # planned|spawning|spawned|verified|blocked
|
||||||
spawned_agent_id: str | None = None
|
spawned_agent_id: str | None = None
|
||||||
session_key: str | None = None
|
session_key: str | None = None
|
||||||
|
|||||||
@@ -15,6 +15,8 @@ class HeadcountRequestCreate(SQLModel):
|
|||||||
class HeadcountRequestUpdate(SQLModel):
|
class HeadcountRequestUpdate(SQLModel):
|
||||||
status: str | None = None
|
status: str | None = None
|
||||||
justification: str | None = None
|
justification: str | None = None
|
||||||
|
fulfilled_employee_id: int | None = None
|
||||||
|
fulfilled_onboarding_id: int | None = None
|
||||||
|
|
||||||
|
|
||||||
class EmploymentActionCreate(SQLModel):
|
class EmploymentActionCreate(SQLModel):
|
||||||
@@ -22,6 +24,7 @@ class EmploymentActionCreate(SQLModel):
|
|||||||
issued_by_employee_id: int
|
issued_by_employee_id: int
|
||||||
action_type: str
|
action_type: str
|
||||||
notes: str | None = None
|
notes: str | None = None
|
||||||
|
idempotency_key: str | None = None
|
||||||
|
|
||||||
|
|
||||||
class AgentOnboardingCreate(SQLModel):
|
class AgentOnboardingCreate(SQLModel):
|
||||||
@@ -31,6 +34,7 @@ class AgentOnboardingCreate(SQLModel):
|
|||||||
cron_interval_ms: int | None = None
|
cron_interval_ms: int | None = None
|
||||||
tools_json: str | None = None
|
tools_json: str | None = None
|
||||||
owner_hr_id: int | None = None
|
owner_hr_id: int | None = None
|
||||||
|
employee_id: int | None = None
|
||||||
status: str = "planned"
|
status: str = "planned"
|
||||||
spawned_agent_id: str | None = None
|
spawned_agent_id: str | None = None
|
||||||
session_key: str | None = None
|
session_key: str | None = None
|
||||||
@@ -44,6 +48,7 @@ class AgentOnboardingUpdate(SQLModel):
|
|||||||
cron_interval_ms: int | None = None
|
cron_interval_ms: int | None = None
|
||||||
tools_json: str | None = None
|
tools_json: str | None = None
|
||||||
owner_hr_id: int | None = None
|
owner_hr_id: int | None = None
|
||||||
|
employee_id: int | None = None
|
||||||
status: str | None = None
|
status: str | None = None
|
||||||
spawned_agent_id: str | None = None
|
spawned_agent_id: str | None = None
|
||||||
session_key: str | None = None
|
session_key: str | None = None
|
||||||
|
|||||||
Reference in New Issue
Block a user