Initial commit: KPI Management System Backend
Features: - FastAPI backend with JWT authentication - MySQL database with SQLAlchemy ORM - KPI workflow: draft → pending → approved → evaluation → completed - Ollama LLM API integration for AI features - Gitea API integration for version control - Complete API endpoints for KPI, dashboard, notifications Tables: KPI_D_* prefix naming convention 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
74
app/schemas/kpi_item.py
Normal file
74
app/schemas/kpi_item.py
Normal file
@@ -0,0 +1,74 @@
|
||||
"""
|
||||
KPI 項目 Schemas
|
||||
"""
|
||||
from typing import Optional
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
class KPIItemBase(BaseModel):
|
||||
"""KPI 項目基本資訊"""
|
||||
|
||||
name: str
|
||||
category: str # financial, customer, internal, learning
|
||||
weight: int = Field(..., ge=1, le=100, description="權重百分比 (1-100)")
|
||||
|
||||
|
||||
class KPIItemCreate(KPIItemBase):
|
||||
"""建立 KPI 項目"""
|
||||
|
||||
template_id: Optional[int] = None
|
||||
level0_criteria: Optional[str] = None
|
||||
level1_criteria: Optional[str] = None
|
||||
level2_criteria: Optional[str] = None
|
||||
level3_criteria: Optional[str] = None
|
||||
level4_criteria: Optional[str] = None
|
||||
|
||||
|
||||
class KPIItemUpdate(BaseModel):
|
||||
"""更新 KPI 項目"""
|
||||
|
||||
name: Optional[str] = None
|
||||
category: Optional[str] = None
|
||||
weight: Optional[int] = Field(None, ge=1, le=100)
|
||||
level0_criteria: Optional[str] = None
|
||||
level1_criteria: Optional[str] = None
|
||||
level2_criteria: Optional[str] = None
|
||||
level3_criteria: Optional[str] = None
|
||||
level4_criteria: Optional[str] = None
|
||||
|
||||
|
||||
class KPIItemResponse(KPIItemBase):
|
||||
"""KPI 項目回應"""
|
||||
|
||||
id: int
|
||||
sheet_id: int
|
||||
template_id: Optional[int]
|
||||
sort_order: int
|
||||
level0_criteria: Optional[str]
|
||||
level1_criteria: Optional[str]
|
||||
level2_criteria: Optional[str]
|
||||
level3_criteria: Optional[str]
|
||||
level4_criteria: Optional[str]
|
||||
self_eval_level: Optional[int]
|
||||
self_eval_note: Optional[str]
|
||||
final_level: Optional[int]
|
||||
final_note: Optional[str]
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
|
||||
class SelfEvalItem(BaseModel):
|
||||
"""自評項目"""
|
||||
|
||||
id: int
|
||||
level: int = Field(..., ge=0, le=4, description="自評等級 (0-4)")
|
||||
note: Optional[str] = None
|
||||
|
||||
|
||||
class ManagerEvalItem(BaseModel):
|
||||
"""主管評核項目"""
|
||||
|
||||
id: int
|
||||
level: int = Field(..., ge=0, le=4, description="評核等級 (0-4)")
|
||||
note: Optional[str] = None
|
||||
Reference in New Issue
Block a user