vnsd13 commited on
Commit
9248c2e
·
1 Parent(s): c3c8ba5

fixing models

Browse files
Files changed (1) hide show
  1. app/models.py +13 -8
app/models.py CHANGED
@@ -1,4 +1,3 @@
1
- # app/models.py
2
  from __future__ import annotations
3
  from typing import List, Optional
4
  from datetime import datetime, timezone
@@ -13,7 +12,7 @@ class Message(BaseModel):
13
  class ChatRequest(BaseModel):
14
  message: str
15
  history: List[Message] = Field(default_factory=list)
16
- username: str = "Baka"
17
 
18
  # ====== Device register ======
19
  class RegisterRequest(BaseModel):
@@ -23,12 +22,18 @@ class RegisterRequest(BaseModel):
23
  class ScheduleRequest(BaseModel):
24
  fcm_token: str
25
  task: str
26
- scheduled_time: datetime # 🚀 UBAH JADI 'scheduled_time' biar cocok sama Android!
27
 
28
- # Helper: konversi ke UTC buat scheduler
29
  @property
30
  def remind_at_utc(self) -> datetime:
31
- # Jika datetime naive (tanpa timezone), beri default UTC / Asia/Jakarta
32
- if self.scheduled_time.tzinfo is None:
33
- return self.scheduled_time.replace(tzinfo=timezone.utc)
34
- return self.scheduled_time.astimezone(timezone.utc)
 
 
 
 
 
 
 
 
 
1
  from __future__ import annotations
2
  from typing import List, Optional
3
  from datetime import datetime, timezone
 
12
  class ChatRequest(BaseModel):
13
  message: str
14
  history: List[Message] = Field(default_factory=list)
15
+ username: Optional[str] = "Vinsen"
16
 
17
  # ====== Device register ======
18
  class RegisterRequest(BaseModel):
 
22
  class ScheduleRequest(BaseModel):
23
  fcm_token: str
24
  task: str
25
+ scheduled_time: str # 🚀 UBAH JADI String DULU BIAR FASTAPI NGGAK LANGSUNG BENTROK 422!
26
 
 
27
  @property
28
  def remind_at_utc(self) -> datetime:
29
+ # Parse string ISO dari Android ke datetime UTC secara manual & aman
30
+ try:
31
+ # Handle ISO String dari Instant.now().toString()
32
+ clean_ts = self.scheduled_time.replace("Z", "+00:00")
33
+ dt = datetime.fromisoformat(clean_ts)
34
+ if dt.tzinfo is None:
35
+ return dt.replace(tzinfo=timezone.utc)
36
+ return dt.astimezone(timezone.utc)
37
+ except Exception:
38
+ # Fallback jika parsing gagal: 1 menit dari sekarang
39
+ return datetime.now(timezone.utc)