83 lines
1.9 KiB
Python
83 lines
1.9 KiB
Python
|
|
from pydantic import BaseModel
|
||
|
|
from typing import Optional
|
||
|
|
|
||
|
|
|
||
|
|
# ===== System Health =====
|
||
|
|
class SystemHealth(BaseModel):
|
||
|
|
uptime_seconds: int
|
||
|
|
cpu_percent: float
|
||
|
|
memory_used_mb: float
|
||
|
|
memory_total_mb: float
|
||
|
|
memory_percent: float
|
||
|
|
disk_used_gb: float
|
||
|
|
disk_total_gb: float
|
||
|
|
disk_percent: float
|
||
|
|
active_users_24h: int
|
||
|
|
|
||
|
|
|
||
|
|
# ===== Daily Stats Base =====
|
||
|
|
class DailyStatItem(BaseModel):
|
||
|
|
date: str
|
||
|
|
count: int
|
||
|
|
|
||
|
|
|
||
|
|
class DailyTokenStatItem(BaseModel):
|
||
|
|
date: str
|
||
|
|
input_tokens: int
|
||
|
|
output_tokens: int
|
||
|
|
|
||
|
|
|
||
|
|
# ===== Conversation Stats =====
|
||
|
|
class ConversationStats(BaseModel):
|
||
|
|
daily_conversations: list[DailyStatItem]
|
||
|
|
daily_messages: list[DailyStatItem]
|
||
|
|
daily_input_tokens: list[DailyTokenStatItem]
|
||
|
|
daily_output_tokens: list[DailyTokenStatItem]
|
||
|
|
totals: dict
|
||
|
|
|
||
|
|
|
||
|
|
# ===== Knowledge Stats =====
|
||
|
|
class KnowledgeStats(BaseModel):
|
||
|
|
daily_new_tags: list[DailyStatItem]
|
||
|
|
daily_documents: list[DailyStatItem]
|
||
|
|
daily_knowledge_queries: list[DailyStatItem]
|
||
|
|
daily_tag_relations: list[DailyStatItem]
|
||
|
|
totals: dict
|
||
|
|
|
||
|
|
|
||
|
|
# ===== Kanban Stats =====
|
||
|
|
class KanbanStats(BaseModel):
|
||
|
|
daily_new_tasks: list[DailyStatItem]
|
||
|
|
daily_completed_tasks: list[DailyStatItem]
|
||
|
|
daily_completion_rate: list[DailyStatItem]
|
||
|
|
current_pending_tasks: int
|
||
|
|
totals: dict
|
||
|
|
|
||
|
|
|
||
|
|
# ===== Community Stats =====
|
||
|
|
class CommunityStats(BaseModel):
|
||
|
|
daily_posts: list[DailyStatItem]
|
||
|
|
daily_replies: list[DailyStatItem]
|
||
|
|
daily_ai_executions: list[DailyStatItem]
|
||
|
|
daily_agent_calls: list[DailyStatItem]
|
||
|
|
totals: dict
|
||
|
|
|
||
|
|
|
||
|
|
# ===== Personal Insights =====
|
||
|
|
class HourlyActivity(BaseModel):
|
||
|
|
hour: int
|
||
|
|
count: int
|
||
|
|
|
||
|
|
|
||
|
|
class TagUsage(BaseModel):
|
||
|
|
tag_path: str
|
||
|
|
usage_count: int
|
||
|
|
|
||
|
|
|
||
|
|
class PersonalInsights(BaseModel):
|
||
|
|
hourly_activity: list[HourlyActivity]
|
||
|
|
top_tags: list[TagUsage]
|
||
|
|
token_trend_percent: float
|
||
|
|
this_month_tokens: int
|
||
|
|
last_month_tokens: int
|