feat: 添加本地文件管理功能和图像处理配置优化

- 新增本地文件查看页面 (LocalFilesView.vue) 支持网格/列表视图
- 添加文件类型筛选、搜索和详情查看功能
- 完善路由配置和菜单导航 (archive-outline 图标)
- 优化后端图像处理配置,添加默认缩略图尺寸设置
- 更新配置加载器支持新的图像处理参数

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
jimmyandClaude committed 2025-08-16 16:47:58 +08:00
1 parent ef79c61842
commit ba1d8f100e
9 files changed
+656 -14

No files matched your search

+9 -1
View File
@@ -17,4 +17,12 @@ logging:
level: "debug"
database:
type: "sqlite"
type: "sqlite"
# 图像处理配置
image:
thumbnail_format: "jpg"
thumbnail_size: [512, 720]
default_thumbnail_size: 720 # 默认使用的缩略图尺寸
thumbnail_quality: 80
screen_size: 1080
+16 -4
View File
@@ -16,6 +16,8 @@ type ImageCompressionOptions struct {
ThumbnailFormat consts.ImageFormat
// 缩略图大小
ThumbnailSize []int
// 默认缩略图大小
DefaultThumbnailSize int
// 缩略图质量
ThumbnailQuality int
// 用户屏幕尺寸大小
@@ -101,10 +103,11 @@ func InitConfig() *Config {
// 转换为原有的配置格式,保持向后兼容
imageCompressionOptions := ImageCompressionOptions{
ThumbnailFormat: convertToImageFormat(fileConfig.Image.ThumbnailFormat),
ThumbnailSize: fileConfig.Image.ThumbnailSize,
ThumbnailQuality: fileConfig.Image.ThumbnailQuality,
ScreenSize: fileConfig.Image.ScreenSize,
ThumbnailFormat: convertToImageFormat(fileConfig.Image.ThumbnailFormat),
ThumbnailSize: fileConfig.Image.ThumbnailSize,
DefaultThumbnailSize: fileConfig.Image.DefaultThumbnailSize,
ThumbnailQuality: fileConfig.Image.ThumbnailQuality,
ScreenSize: fileConfig.Image.ScreenSize,
}
pathConfig := PathConfig{
@@ -265,3 +268,12 @@ func GetTaskConfig() TaskConfig {
return taskConfig
}
// GetDefaultThumbnailSize 获取默认缩略图尺寸
func GetDefaultThumbnailSize() int {
if CONFIG.ImageCompressionOption.DefaultThumbnailSize > 0 {
return CONFIG.ImageCompressionOption.DefaultThumbnailSize
}
// 如果未设置或为0,返回默认值720
return 720
}
+14 -9
View File
@@ -52,11 +52,12 @@ type LoggingConfig struct {
// ImageConfig 图像处理配置
type ImageConfig struct {
ThumbnailFormat string `yaml:"thumbnail_format" json:"thumbnail_format"`
ThumbnailSize []int `yaml:"thumbnail_size" json:"thumbnail_size"`
ThumbnailQuality int `yaml:"thumbnail_quality" json:"thumbnail_quality"`
ScreenSize int `yaml:"screen_size" json:"screen_size"`
SupportedFormats struct {
ThumbnailFormat string `yaml:"thumbnail_format" json:"thumbnail_format"`
ThumbnailSize []int `yaml:"thumbnail_size" json:"thumbnail_size"`
DefaultThumbnailSize int `yaml:"default_thumbnail_size" json:"default_thumbnail_size"`
ThumbnailQuality int `yaml:"thumbnail_quality" json:"thumbnail_quality"`
ScreenSize int `yaml:"screen_size" json:"screen_size"`
SupportedFormats struct {
Base []string `yaml:"base" json:"base"`
Special []string `yaml:"special" json:"special"`
Thumbnail []string `yaml:"thumbnail" json:"thumbnail"`
@@ -155,10 +156,11 @@ func GetDefaultFileConfig() *FileConfig {
MaxLifetime: 0,
},
Image: ImageConfig{
ThumbnailFormat: "jpg",
ThumbnailSize: []int{512, 720},
ThumbnailQuality: 80,
ScreenSize: 1080,
ThumbnailFormat: "jpg",
ThumbnailSize: []int{512, 720},
DefaultThumbnailSize: 720,
ThumbnailQuality: 80,
ScreenSize: 1080,
SupportedFormats: struct {
Base []string `yaml:"base" json:"base"`
Special []string `yaml:"special" json:"special"`
@@ -287,6 +289,9 @@ func MergeWithDefaults(fileConfig *FileConfig) *FileConfig {
if fileConfig.Image.ScreenSize == 0 {
fileConfig.Image.ScreenSize = defaultConfig.Image.ScreenSize
}
if fileConfig.Image.DefaultThumbnailSize == 0 {
fileConfig.Image.DefaultThumbnailSize = defaultConfig.Image.DefaultThumbnailSize
}
if len(fileConfig.Image.SupportedFormats.Base) == 0 {
fileConfig.Image.SupportedFormats.Base = defaultConfig.Image.SupportedFormats.Base
}