新增文件管理与技能管理功能:
All checks were successful
Deploy Noval to K3s / deploy (push) Successful in 47s

- **文件管理**:
  - 支持文件上传、解析和删除。
  - 限制支持格式(txt, md, docx, pdf),最大 10MB。
  - 提供前端上传区、文件列表及后端解析服务。

- **技能管理**:
  - 新增技能的创建、更新及删除功能。
  - 支持分配自定义提示词和工具权限。
  - 提供技能列表及分组工具选择交互界面。

同时调整相关 API 和前端组件,优化协作体验。
This commit is contained in:
2026-03-22 23:50:14 +08:00
parent 7d5f4640b3
commit b39377e487
21 changed files with 1913 additions and 45 deletions

View File

@@ -74,6 +74,33 @@ class Chapter(SQLModel, table=True):
updated_at: datetime = Field(default_factory=_now_utc)
class NovelFile(SQLModel, table=True):
"""小说关联文件"""
id: Optional[int] = Field(default=None, primary_key=True)
novel_id: int = Field(foreign_key="novel.id", index=True)
filename: str = Field(max_length=255) # 原始文件名
stored_name: str = Field(max_length=255) # 磁盘存储名uuid + 扩展名)
file_size: int = Field(default=0) # 字节数
mime_type: str = Field(default="", max_length=100)
text_length: int = Field(default=0) # 解析后纯文本字符数
created_at: datetime = Field(default_factory=_now_utc)
class Skill(SQLModel, table=True):
"""Skill 插件:自定义系统提示词 + 工具白名单"""
id: Optional[int] = Field(default=None, primary_key=True)
name: str = Field(max_length=100, index=True)
description: str = Field(default="", max_length=500)
system_prompt: str = Field(default="")
allowed_tools: str = Field(default="[]") # JSON 数组字符串,"[]" 表示全部工具
is_builtin: bool = Field(default=False)
novel_id: int | None = Field(default=None, foreign_key="novel.id", index=True)
created_at: datetime = Field(default_factory=_now_utc)
updated_at: datetime = Field(default_factory=_now_utc)
class WorldSetting(SQLModel, table=True):
"""世界观设定,每部小说一条记录"""