schemas.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. from __future__ import annotations
  2. from typing import Literal
  3. from pydantic import BaseModel, Field
  4. ConfirmStatus = Literal["PENDING", "TRUSTED", "SUSPICIOUS", "IGNORED", "NEED_MORE_INFO"]
  5. ItemType = Literal["service", "process"]
  6. class StatusUpdate(BaseModel):
  7. confirm_status: ConfirmStatus
  8. user_note: str | None = None
  9. class BatchStatusUpdate(BaseModel):
  10. ids: list[int] = Field(default_factory=list)
  11. confirm_status: ConfirmStatus
  12. user_note: str | None = None
  13. class AiImportItem(BaseModel):
  14. type: ItemType
  15. name: str
  16. description: str | None = None
  17. judgement: Literal["TRUSTED", "SUSPICIOUS", "NEED_MORE_INFO"]
  18. risk_level: Literal["LOW", "MEDIUM", "HIGH"]
  19. reason: str | None = None
  20. suggestion: str | None = None
  21. class AiImportRequest(BaseModel):
  22. items: list[AiImportItem]
  23. class PromptRequest(BaseModel):
  24. ids: list[int] | None = None
  25. scope: Literal["selected", "pending"] = "pending"
  26. class TagCreate(BaseModel):
  27. name: str = Field(min_length=1, max_length=80)
  28. description: str | None = None
  29. is_controllable: bool = True
  30. class TagUpdate(BaseModel):
  31. name: str = Field(min_length=1, max_length=80)
  32. description: str | None = None
  33. is_controllable: bool = True
  34. class TagAssignRequest(BaseModel):
  35. tag_ids: list[int] = Field(default_factory=list)
  36. class ProcessStartRequest(BaseModel):
  37. command: str = Field(min_length=1)
  38. cwd: str | None = None