Initial commit: InfoUser Monitor with FastAPI, agent, Docker, JWT auth, notifications, filters and CSV export

This commit is contained in:
2026-07-16 11:53:51 +07:00
commit cf2727da2b
31 changed files with 1957 additions and 0 deletions
+92
View File
@@ -0,0 +1,92 @@
from typing import Optional, List
from pydantic import BaseModel, ConfigDict
from datetime import datetime
class UserCreate(BaseModel):
username: str
password: str
class UserOut(BaseModel):
id: int
username: str
role: str
created_at: Optional[datetime]
model_config = ConfigDict(from_attributes=True)
class Token(BaseModel):
access_token: str
refresh_token: str
token_type: str = "bearer"
class TokenRefresh(BaseModel):
refresh_token: str
class LoginPayload(BaseModel):
username: str
password: str
class HeartbeatPayload(BaseModel):
hostname: str
username: str
os_info: Optional[str] = None
local_ip: Optional[str] = None
public_ip: Optional[str] = None
uptime_sec: int
cpu_percent: float
ram_percent: float
ram_total_gb: Optional[float] = None
disk_info: Optional[List[dict]] = None
cpu_temp: Optional[float] = None
load_avg: Optional[str] = None
processes: Optional[List[dict]] = None
class HeartbeatOut(BaseModel):
id: int
timestamp: datetime
username: Optional[str]
local_ip: Optional[str]
cpu_percent: Optional[float]
ram_percent: Optional[float]
cpu_temp: Optional[float]
model_config = ConfigDict(from_attributes=True)
class ComputerOut(BaseModel):
id: int
hostname: str
os_info: Optional[str]
first_seen: Optional[datetime]
last_seen: Optional[datetime]
status: str
current_user: Optional[str]
current_ip: Optional[str]
current_cpu_percent: Optional[float]
current_ram_percent: Optional[float]
model_config = ConfigDict(from_attributes=True)
class ComputerDetailOut(ComputerOut):
heartbeats: List[HeartbeatOut] = []
class NotificationOut(BaseModel):
id: int
computer_id: Optional[int]
type: str
title: str
message: str
is_read: bool
sent_at: Optional[datetime]
read_at: Optional[datetime]
model_config = ConfigDict(from_attributes=True)