30 lines
672 B
Python
30 lines
672 B
Python
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
from datetime import datetime
|
||
|
|
from typing import Literal
|
||
|
|
|
||
|
|
from pydantic import BaseModel, Field
|
||
|
|
|
||
|
|
|
||
|
|
SkillLifecycleAction = Literal[
|
||
|
|
"created_candidate",
|
||
|
|
"promoted_to_shadow",
|
||
|
|
"promoted_to_active",
|
||
|
|
"degraded_to_deprecated",
|
||
|
|
"retired",
|
||
|
|
"reactivated",
|
||
|
|
"feedback_recorded",
|
||
|
|
"no_change",
|
||
|
|
]
|
||
|
|
|
||
|
|
|
||
|
|
class SkillLifecycleDecision(BaseModel):
|
||
|
|
skill_name: str
|
||
|
|
action: SkillLifecycleAction
|
||
|
|
previous_status: str | None = None
|
||
|
|
new_status: str
|
||
|
|
reason: str
|
||
|
|
evidence_refs: list[dict[str, object]] = Field(default_factory=list)
|
||
|
|
confidence: float | None = None
|
||
|
|
review_after: datetime | None = None
|