teoat commited on
Commit
b47c010
·
verified ·
1 Parent(s): c12de26

Upload app/modules/cases/schemas.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. app/modules/cases/schemas.py +83 -0
app/modules/cases/schemas.py ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from datetime import datetime
2
+ from typing import Any
3
+
4
+ from pydantic import BaseModel, Field
5
+
6
+ # ===== REQUEST/RESPONSE MODELS =====
7
+
8
+
9
+ class CaseCreate(BaseModel):
10
+ title: str = Field(min_length=1, max_length=200)
11
+ description: str | None = Field(None, max_length=2000)
12
+ priority: str | None = Field("Medium", pattern=r"^(?i)(Low|Medium|High|Critical)$")
13
+ assignee_id: str | None = None
14
+ tags: list[str] | None = Field(default_factory=list, max_items=20)
15
+
16
+
17
+ class CaseUpdate(BaseModel):
18
+ title: str | None = Field(None, min_length=1, max_length=200)
19
+ description: str | None = Field(None, max_length=2000)
20
+ priority: str | None = Field(None, pattern=r"^(?i)(Low|Medium|High|Critical)$")
21
+ assignee_id: str | None = None
22
+ tags: list[str] | None = Field(None, max_items=20)
23
+
24
+
25
+ class CaseResponse(BaseModel):
26
+ id: str
27
+ case_id: str
28
+ title: str
29
+ description: str | None = None
30
+ status: str
31
+ priority: str
32
+ assignee_id: str | None = None
33
+ risk_score: float | None = 0.0
34
+ risk_level: str | None = "low"
35
+ fraud_amount: float | None = 0.0
36
+ customer_name: str | None = "Unknown"
37
+ created_at: datetime
38
+ updated_at: datetime | None = None
39
+ due_date: datetime | None = None
40
+ tags: list[str] = Field(default_factory=list)
41
+
42
+
43
+ class CaseCreateResponse(BaseModel):
44
+ id: str
45
+ case_id: str
46
+ message: str
47
+ case: dict[str, Any]
48
+
49
+
50
+ class CaseListResponse(BaseModel):
51
+ cases: list[CaseResponse]
52
+ page: int
53
+ per_page: int
54
+ total: int
55
+ total_pages: int
56
+
57
+
58
+ class CaseNoteCreate(BaseModel):
59
+ content: str = Field(min_length=1, max_length=2000)
60
+ is_internal: bool = False
61
+ category: str | None = Field(
62
+ None, pattern=r"^(Investigation|Evidence|Analysis|Communication)$"
63
+ )
64
+
65
+
66
+ class CaseNoteResponse(BaseModel):
67
+ id: str
68
+ content: str
69
+ author_id: str
70
+ author_name: str
71
+ is_internal: bool
72
+ category: str | None
73
+ created_at: datetime
74
+
75
+
76
+ class BulkDeleteRequest(BaseModel):
77
+ case_ids: list[str] = Field(min_items=1, max_items=100)
78
+
79
+
80
+ class BulkDeleteResponse(BaseModel):
81
+ deleted_count: int
82
+ failed_ids: list[str]
83
+ message: str