feat(web): Phase 11 對話式 AI UI/UX (#47-59)
Phase 11.1 對話式容器: - ConversationalView 雙欄佈局 (左側列表 + 右側詳情) - ApprovalThreadItem 風險等級 + 相對時間顯示 - SSE 即時更新整合 Phase 11.2 批次處理: - BatchModeSelector 組件 (全部接受/逐一審核/CRITICAL Only) - POST /api/v1/approvals/bulk-approve API 端點 - CRITICAL + DESTRUCTIVE 安全過濾 (禁止批次核准) Phase 11.4 鍵盤快捷鍵: - useKeyboardShortcuts hook (Y/N/方向鍵/Esc) - Y 鍵長按 2 秒核准 + 頂部進度指示器 - 快捷鍵說明 Modal (Y/N 高亮顯示) i18n: 100% next-intl 覆蓋 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -270,3 +270,38 @@ class PendingApprovalsResponse(BaseModel):
|
||||
"""待簽核清單回應"""
|
||||
count: int
|
||||
approvals: list[ApprovalRequestResponse]
|
||||
|
||||
|
||||
# =============================================================================
|
||||
# Phase 11: 批次處理 (Bulk Approval)
|
||||
# =============================================================================
|
||||
|
||||
class BulkApproveRequest(BaseModel):
|
||||
"""
|
||||
批次簽核請求 (Phase 11)
|
||||
|
||||
安全限制:
|
||||
- CRITICAL 風險禁止批次核准
|
||||
- DESTRUCTIVE 資料影響禁止批次核准
|
||||
"""
|
||||
approval_ids: list[str] = Field(..., description="要批次簽核的 Approval ID 列表")
|
||||
signer_id: str = Field(..., description="簽核者 ID")
|
||||
signer_name: str = Field(..., description="簽核者名稱")
|
||||
comment: str | None = Field(default=None, description="批次簽核備註")
|
||||
|
||||
|
||||
class BulkApproveResult(BaseModel):
|
||||
"""單個批次簽核結果"""
|
||||
approval_id: str
|
||||
success: bool
|
||||
message: str
|
||||
execution_triggered: bool = False
|
||||
|
||||
|
||||
class BulkApproveResponse(BaseModel):
|
||||
"""批次簽核回應"""
|
||||
total: int = Field(..., description="請求處理的總數")
|
||||
succeeded: int = Field(..., description="成功簽核數")
|
||||
failed: int = Field(..., description="失敗數")
|
||||
skipped: int = Field(..., description="跳過數 (CRITICAL/DESTRUCTIVE)")
|
||||
results: list[BulkApproveResult] = Field(..., description="各個 Approval 的處理結果")
|
||||
|
||||
Reference in New Issue
Block a user