初始提交:极码 GeekCode 全栈项目(FastAPI + Vue3)

This commit is contained in:
2026-04-12 10:12:18 +08:00
commit 6aecef16f6
104 changed files with 21009 additions and 0 deletions

View File

View File

@@ -0,0 +1,62 @@
"""AI模型配置Schema"""
from pydantic import BaseModel
from datetime import datetime
from typing import Optional, List
class AIModelCreate(BaseModel):
provider: str
provider_name: str = ""
model_id: str
model_name: str = ""
api_key: str = ""
base_url: str = ""
task_type: str = ""
is_enabled: bool = True
is_default: bool = False
web_search_enabled: bool = False
web_search_count: int = 5 # 联网搜索结果条数1-50
description: str = ""
class AIModelUpdate(BaseModel):
provider_name: Optional[str] = None
model_id: Optional[str] = None
model_name: Optional[str] = None
api_key: Optional[str] = None
base_url: Optional[str] = None
task_type: Optional[str] = None
is_enabled: Optional[bool] = None
is_default: Optional[bool] = None
web_search_enabled: Optional[bool] = None
web_search_count: Optional[int] = None
description: Optional[str] = None
class AIModelResponse(BaseModel):
id: int
provider: str
provider_name: str = ""
model_id: str
model_name: str = ""
api_key_masked: str = "" # 脱敏后的API Key
base_url: str = ""
task_type: str = ""
is_enabled: bool = True
is_default: bool = False
web_search_enabled: bool = False
web_search_count: int = 5
description: str = ""
created_at: datetime
updated_at: datetime
class Config:
from_attributes = True
class ProviderInfo(BaseModel):
"""服务商信息"""
provider: str
name: str
models: List[dict]
default_base_url: str = ""

View File

@@ -0,0 +1,38 @@
"""网站收藏Schema"""
from pydantic import BaseModel
from datetime import datetime
from typing import Optional, List
class BookmarkCreate(BaseModel):
name: str
url: str
icon: str = ""
class BookmarkUpdate(BaseModel):
name: Optional[str] = None
url: Optional[str] = None
icon: Optional[str] = None
sort_order: Optional[int] = None
class BookmarkResponse(BaseModel):
id: int
name: str
url: str
icon: str = ""
sort_order: int = 0
created_at: datetime
class Config:
from_attributes = True
class ReorderItem(BaseModel):
id: int
sort_order: int
class ReorderRequest(BaseModel):
items: List[ReorderItem]

View File

@@ -0,0 +1,55 @@
"""对话相关Schema"""
from pydantic import BaseModel
from datetime import datetime
from typing import Optional, List
class MessageCreate(BaseModel):
content: str
image_urls: List[str] = []
class MessageResponse(BaseModel):
id: int
conversation_id: int
role: str
content: str
image_urls: str = ""
created_at: datetime
class Config:
from_attributes = True
class ConversationCreate(BaseModel):
type: str # requirement / architecture
title: str = "新对话"
class ConversationResponse(BaseModel):
id: int
user_id: int
title: str
type: str
created_at: datetime
updated_at: datetime
class Config:
from_attributes = True
class ConversationDetail(ConversationResponse):
messages: List[MessageResponse] = []
class RequirementAnalyzeRequest(BaseModel):
conversation_id: Optional[int] = None
content: str
image_urls: List[str] = []
model_config_id: Optional[int] = None
class ArchitectureRequest(BaseModel):
conversation_id: Optional[int] = None
content: str
model_config_id: Optional[int] = None

69
backend/schemas/post.py Normal file
View File

@@ -0,0 +1,69 @@
"""帖子相关Schema"""
from pydantic import BaseModel
from datetime import datetime
from typing import Optional, List
class PostCreate(BaseModel):
title: str
content: str
category: str = ""
tags: List[str] = []
is_public: bool = True
is_draft: bool = False
class PostUpdate(BaseModel):
title: Optional[str] = None
content: Optional[str] = None
category: Optional[str] = None
tags: Optional[List[str]] = None
is_public: Optional[bool] = None
is_draft: Optional[bool] = None
class PostResponse(BaseModel):
id: int
user_id: int
title: str
content: str
category: str = ""
tags: str = ""
is_public: bool = True
is_draft: bool = False
view_count: int = 0
like_count: int = 0
collect_count: int = 0
comment_count: int = 0
created_at: datetime
updated_at: datetime
# 额外字段(查询时填充)
author_name: str = ""
is_liked: bool = False
is_collected: bool = False
class Config:
from_attributes = True
class PostListResponse(BaseModel):
items: List[PostResponse]
total: int
page: int
page_size: int
class CommentCreate(BaseModel):
content: str
class CommentResponse(BaseModel):
id: int
post_id: int
user_id: int
content: str
created_at: datetime
author_name: str = ""
class Config:
from_attributes = True

43
backend/schemas/user.py Normal file
View File

@@ -0,0 +1,43 @@
"""用户相关Schema"""
from pydantic import BaseModel, EmailStr
from datetime import datetime
from typing import Optional
class UserRegister(BaseModel):
username: str
email: str
password: str
class UserLogin(BaseModel):
username: str
password: str
class UserResponse(BaseModel):
id: int
username: str
email: str
avatar: str = ""
is_admin: bool = False
is_banned: bool = False
is_approved: bool = False
created_at: datetime
class Config:
from_attributes = True
class UserUpdate(BaseModel):
username: Optional[str] = None
email: Optional[str] = None
avatar: Optional[str] = None
old_password: Optional[str] = None
new_password: Optional[str] = None
class TokenResponse(BaseModel):
access_token: str
token_type: str = "bearer"
user: UserResponse