119 Commits

Author SHA1 Message Date
Dev Team
355c5940d4 fix: 隐藏系统级统一OSS用户的OSS配置按钮
## 问题
用户权限为 oss_only 时仍显示"配置/修改OSS"按钮,但用户使用的是系统级统一OSS配置,
不需要也无法修改个人OSS配置。

## 修复
- app.html:1894 - 添加条件判断 `v-if="user?.has_oss_config"`
- 仅在用户有个人OSS配置时显示"修改个人OSS配置"按钮
- 修改按钮文本:"配置/修改OSS" → "修改个人OSS配置"
- 修改说明文本:"已配置云服务" → "已配置系统级OSS"

## 影响
-  系统级统一OSS用户不再看到误导性的配置按钮
-  有个人OSS配置的用户仍可以修改个人配置
-  提升用户体验,避免混淆

**Bug数量:** 1个UI问题
**修改文件:** 1个
2026-01-20 22:52:09 +08:00
Dev Team
78b64b50ab fix: 全面修复系统级统一OSS配置的12个关键bug
## 修复内容

### 后端API修复(server.js)
- 添加oss_config_source字段到登录响应,用于前端判断OSS直连上传
- 修复6个API未检查系统级统一OSS配置的问题:
  * upload-signature: 使用effectiveBucket支持系统配置
  * upload-complete: 添加OSS配置安全检查
  * oss-usage/oss-usage-full: 检查系统级配置
  * switch-storage: 改进OSS配置检查逻辑
  * 5个管理员API: storage-cache检查/重建/修复功能

### 存储客户端修复(storage.js)
- rename方法: 使用getBucket()支持系统级统一配置
- stat方法: 使用getBucket()替代user.oss_bucket
- 重命名操作: 改用DeleteObjectCommand替代DeleteObjectsCommand
  * 修复阿里云OSS"Missing Some Required Arguments"错误
  * 解决重命名后旧文件无法删除的问题
- put方法: 改用Buffer上传替代流式上传
  * 避免AWS SDK的aws-chunked编码问题
  * 提升阿里云OSS兼容性
- 添加阿里云OSS特定配置:
  * disableNormalizeBucketName: true
  * checksumValidation: false

### 存储缓存修复(utils/storage-cache.js)
- resetUsage方法: 改用直接SQL更新,绕过UserDB字段白名单限制
  * 修复缓存重建失败的问题
- 3个方法改用ossClient.getBucket():
  * validateAndFix
  * checkIntegrity
  * rebuildCache
- checkAllUsersIntegrity: 添加系统级配置检查

### 前端修复(app.js)
- 上传路由: 使用oss_config_source判断而非has_oss_config
- 下载/预览: 统一使用oss_config_source
- 确保系统级统一OSS用户可以直连上传/下载

### 安装脚本优化(install.sh)
- 清理并优化安装流程

## 影响范围

**关键修复:**
-  系统级统一OSS配置现在完全可用
-  文件重命名功能正常工作(旧文件会被正确删除)
-  存储使用量缓存正确显示和更新
-  所有管理员功能支持系统级统一OSS
-  上传完成API不再有安全漏洞

**修复的Bug数量:** 12个核心bug
**修改的文件:** 6个
**代码行数:** +154 -264

## 测试验证

-  用户2存储使用量: 143.79 MB(已重建缓存)
-  文件重命名: 旧文件正确删除
-  管理员功能: 缓存检查/重建/修复正常
-  上传功能: 直连OSS,缓存正确更新
-  多用户: 用户3已激活并可正常使用
2026-01-20 22:23:37 +08:00
Dev Team
53ca5e56e8 feat: 删除SFTP上传工具,修复OSS配置bug
主要变更:
- 删除管理员工具栏及上传工具相关功能(后端API + 前端UI)
- 删除upload-tool目录及相关文件
- 修复OSS配置测试连接bug(testUser缺少has_oss_config标志)
- 新增backend/utils加密和缓存工具模块
- 更新.gitignore排除测试报告文件

技术改进:
- 统一使用OSS存储,废弃SFTP上传方式
- 修复OSS配置保存和测试连接时的错误处理
- 完善代码库文件管理,排除临时报告文件
2026-01-20 20:41:18 +08:00
efaa2308eb feat: 全面优化代码质量至 8.55/10 分
## 安全增强
- 添加 CSRF 防护机制(Double Submit Cookie 模式)
- 增强密码强度验证(8字符+两种字符类型)
- 添加 Session 密钥安全检查
- 修复 .htaccess 文件上传漏洞
- 统一使用 getSafeErrorMessage() 保护敏感错误信息
- 增强数据库原型污染防护
- 添加被封禁用户分享访问检查

## 功能修复
- 修复模态框点击外部关闭功能
- 修复 share.html 未定义方法调用
- 修复 verify.html 和 reset-password.html API 路径
- 修复数据库 SFTP->OSS 迁移逻辑
- 修复 OSS 未配置时的错误提示
- 添加文件夹名称长度限制
- 添加文件列表 API 路径验证

## UI/UX 改进
- 添加 6 个按钮加载状态(登录/注册/修改密码等)
- 将 15+ 处 alert() 替换为 Toast 通知
- 添加防重复提交机制(创建文件夹/分享)
- 优化 loadUserProfile 防抖调用

## 代码质量
- 消除 formatFileSize 重复定义
- 集中模块导入到文件顶部
- 添加 JSDoc 注释
- 创建路由拆分示例 (routes/)

## 测试套件
- 添加 boundary-tests.js (60 用例)
- 添加 network-concurrent-tests.js (33 用例)
- 添加 state-consistency-tests.js (38 用例)
- 添加 test_share.js 和 test_admin.js

## 文档和配置
- 新增 INSTALL_GUIDE.md 手动部署指南
- 新增 VERSION.txt 版本历史
- 完善 .env.example 配置说明
- 新增 docker-compose.yml
- 完善 nginx.conf.example

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 10:45:51 +08:00
ab7e08a21b fix: 全面修复和优化 OSS 功能
## 安全修复
- 修复 /api/user/profile 接口泄露 OSS 密钥的安全漏洞
- 增强 getObjectKey 路径安全检查(空字节注入、URL 编码绕过)
- 修复 storage.end() 重复调用问题
- 增强上传签名接口的安全检查

## Bug 修复
- 修复 rename 使用错误的 PutObjectCommand,改为 CopyObjectCommand
- 修复 CopySource 编码问题,正确处理特殊字符
- 修复签名 URL 生成功能(添加 @aws-sdk/s3-request-presigner)
- 修复 S3Client 配置(阿里云 region 格式、endpoint 处理)
- 修复分页删除和列表功能(超过 1000 文件的处理)
- 修复分享下载使用错误的存储类型字段
- 修复前端媒体预览异步处理错误
- 修复 OSS 直传 objectKey 格式不一致问题
- 修复包名错误 @aws-sdk/request-presigner -> @aws-sdk/s3-request-presigner
- 修复前端下载错误处理不完善

## 新增功能
- 添加 OSS 连接测试 API (/api/user/test-oss)
- 添加重命名失败回滚机制
- 添加 OSS 配置前端验证

## 其他改进
- 更新 install.sh 仓库地址为 git.workyai.cn
- 添加 crypto 模块导入
- 修复代码格式和重复定义问题
- 添加缺失的表单对象定义

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 09:46:00 +08:00
Claude Opus
7aa8a862a4 chore: 优化代码质量和安全性\n\n- 删除未使用的 @aws-sdk/lib-storage 依赖,简化依赖\n- 修复重复导入 database 模块\n- 消除 formatSize 重复代码,提取为共享函数\n- 修复 verify.html XSS 漏洞,添加 HTML 转义\n- 更新 index.html 过时文案(断点续传→直连上传) 2026-01-18 20:23:39 +08:00
Claude Opus
92b70a11d7 refactor: 清理所有调试日志和死代码
- 🗑️ 删除未使用的依赖: net, dns 模块
- 🧹 将 console.log("[DEBUG]") 替换为 SystemLogDB.log()
- 🧹 清理分享验证相关的调试日志
- 🧹 清理数据库查询的调试日志
- 🧹 删除下载功能的调试日志
-  代码更专业,日志统一使用 SystemLogDB

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-18 18:09:18 +08:00
Claude Opus
e2806126a6 fix: 修复管理员OSS配置缺失和数据库迁移问题
- 🐛 修复管理员无法配置OSS的问题(添加管理员OSS配置界面)
- 🐛 修复 database.js 迁移代码引用不存在的 has_ftp_config 字段
-  管理员设置页面新增OSS配置、空间统计、存储切换功能
- 📝 完善管理员OSS配置体验

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-18 17:36:34 +08:00
Claude Opus
0b0e5b9d7c feat: v3.1.0 OSS直连优化与代码质量提升
- 🚀 OSS 直连上传下载(用户直连OSS,不经过后端)
-  新增 Presigned URL 签名接口
-  支持自定义 OSS endpoint 配置
- 🐛 修复 buildS3Config 不支持自定义 endpoint 的问题
- 🐛 清理残留的 basic-ftp 依赖
- ♻️ 更新 package.json 项目描述和版本号
- 📝 完善 README.md 更新日志和 CORS 配置说明
- 🔒 安全性增强:签名 URL 15分钟/1小时有效期

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-18 17:14:16 +08:00
5d1ae9a343 🎨 调整文件列表hover颜色
- 暗色主题:rgba(255, 255, 255, 0.05) 微亮
- 亮色主题:rgba(0, 0, 0, 0.04) 微暗

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 16:35:45 +08:00
1503fe1d97 🐛 修复文件列表hover时变白的问题
- 移除硬编码的mouseover/mouseout颜色
- 添加.file-list-row类使用CSS处理hover效果
- 深色/浅色主题都使用半透明紫色作为hover背景

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 16:30:16 +08:00
0e6230612c 🐛 加强文件名解码的空值处理
- 后端decodeHtmlEntities添加空字符串默认值
- 前端decodeHtmlEntities非字符串时返回空字符串
- getFileDisplayName增强类型检查

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 14:56:26 +08:00
dd97328b2f 前端添加HTML实体解码兜底
- 添加decodeHtmlEntities方法解码文件名
- 添加getFileDisplayName统一获取显示名称
- 确保文件名正确显示,即使后端未解码

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 14:04:50 +08:00
4250e7de2f 添加displayName字段显示解码后的文件名
- 后端返回文件列表时添加displayName字段(解码HTML实体)
- 前端使用displayName显示文件名,保持原始name用于操作

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 13:54:58 +08:00
1581da1e3e 🐛 优化弹窗被拦截时的处理方式
- 弹窗被阻止时改为toast提示,避免当前页跳转

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 13:12:41 +08:00
4fe59aa27c 🐛 修复分享链接打开方式
- 添加openShare方法替代直接调用window.open
- 处理弹窗被浏览器阻止的情况,自动退回当前页跳转

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 13:04:11 +08:00
2b25f18137 重新设计分享管理页面
- 添加搜索/筛选功能(关键字、类型、状态、排序)
- 重新设计卡片视图,展示更多信息(状态、类型、加密、存储来源等)
- 添加filteredShares计算属性实现筛选和排序
- 添加辅助方法:getShareTypeLabel、getShareStatus、getShareProtection等
- 优化分享卡片样式,支持深色/浅色主题

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 12:57:35 +08:00
7d5a230007 优化监控页面加载体验
- 添加monitorTabLoading整体加载遮罩
- 创建openMonitorTab()和initMonitorTab()方法
- 使用Promise.all并行加载健康检测和系统日志
- 数据全部加载完成后才显示监控内容,彻底解决刷新闪烁问题

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 12:00:43 +08:00
21ceff64f8 🐛 优化监控页面初始状态设置
- 将adminTab计算提取为initialAdminTab变量
- healthCheck.loading和systemLogs.loading根据initialAdminTab设置初始值
- 确保data()执行时所有状态一致,避免刷新闪烁

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 11:50:59 +08:00
702cf6e9b4 🐛 修复监控页面loading状态 - 在mounted中提前设置
- 将healthCheck.loading和systemLogs.loading初始值改回false
- 在mounted中、checkLoginStatus之前,判断adminTab并设置loading
- 确保在appReady变为true之前loading状态已正确设置

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 11:28:18 +08:00
62044ca98d 🐛 修复监控页面刷新时的"没有数据"闪烁
- 健康检测:添加loading状态显示,使用v-else-if链
- 系统日志:修复v-if逻辑,loading优先于空状态显示
- 确保在数据加载完成前显示"加载中"而不是"暂无数据"

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 11:24:07 +08:00
3b8714c93c 🐛 修复监控页面刷新时显示"没有数据"的闪烁
- 当adminTab为monitor时,healthCheck和systemLogs的loading初始值设为true
- 这样在数据加载完成前显示"加载中"而不是"没有数据"

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 11:19:19 +08:00
af15781154 🐛 修复管理员标签页刷新时的UI闪烁
- adminTab初始值直接从localStorage读取,而非在checkLoginStatus中恢复
- 这样Vue初始化时就已经是正确的标签页,避免先显示概览再切换的闪烁

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 11:11:20 +08:00
c4d3c15403 🐛 修复页面刷新时UI闪烁问题
- 添加appReady状态控制应用显示时机
- 在checkLoginStatus完成后才显示主界面
- 添加加载占位符动画(云图标脉冲效果)
- 使用v-if/v-else确保UI状态一致性

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 11:07:07 +08:00
9f0f8f69af 添加管理员标签页持久化功能
- 刷新页面后管理员标签页保持不变(概览/设置/监控/用户/工具)
- 使用localStorage存储当前标签页状态
- 登出时自动清理保存的标签页状态

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 11:03:55 +08:00
a28909baca ui: 优化监控页面交互体验
- 点击监控标签时自动加载健康检查和系统日志
- 缩小清理/刷新按钮尺寸,更简洁美观
- 按钮文字精简:"清理旧日志" → "清理"

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 10:54:26 +08:00
962b01d05a security: refreshToken 也存储在 HttpOnly Cookie 中
## 后端修改
- 登录时同时设置 token 和 refreshToken 的 HttpOnly Cookie
- refreshToken 有效期7天,token 有效期2小时
- 刷新接口优先从 Cookie 读取 refreshToken(向后兼容请求体)
- 登出时同时清除两个 Cookie

## 前端修改
- 移除 refreshToken 变量和相关逻辑
- 简化 doRefreshToken(),不再手动传递 refreshToken
- 简化 tryRefreshOrLogout(),直接尝试刷新

## 好处
- 页面刷新后 refreshToken 不会丢失
- 完全无感刷新,用户体验更好
- 前端代码更简洁(减少约20行)
- refreshToken 也无法被 XSS 窃取

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 10:38:40 +08:00
d05e3a22f1 security: 实施 HttpOnly Cookie 鉴权方案
## 后端修改
- 新增 /api/logout 接口清除认证 Cookie

## 前端修改
- 移除 localStorage 存储 token/refreshToken(防止 XSS 窃取)
- 移除所有手动 Authorization 头(共36处)
- checkLoginStatus 改为直接调用 API 验证(Cookie 自动携带)
- logout 改为调用后端接口清除 Cookie
- 简化 token 刷新逻辑

## 安全性提升
- Token 从 localStorage 迁移到 HttpOnly Cookie
- XSS 攻击无法通过 JS 读取 token
- 配合 SameSite 属性防御 CSRF 攻击

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 10:33:27 +08:00
d1c5b0c1bf fix: 修复移动端文件列表滑动问题
- 移除 touchstart 中的 event.preventDefault(),不再阻止默认滚动
- 添加 handleLongPressMove 方法检测手指移动
- 滑动超过 10px 时自动取消长按,允许正常滚动
- 为 grid 和 list 视图的文件项添加 @touchmove 事件

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 10:12:46 +08:00
4f1a1ec97c fix: 修复验证码请求429错误
问题:
- 短时间内多次请求验证码触发限流(429 Too Many Requests)

修复:
- 后端:验证码最小请求间隔从3秒改为1秒
- 前端:添加2秒防抖,避免重复请求
- 前端:429错误时保留已有验证码图片

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 14:06:23 +08:00
9d36063e09 fix: 修复验证码session不一致的问题
问题原因:
- 验证码图片通过<img src>加载,可能不携带session cookie
- 导致验证码生成和表单提交使用不同的session

修复方案:
- 改用axios请求获取验证码(blob格式)
- 确保验证码请求携带withCredentials
- 点击"忘记密码"时立即加载验证码
- 切换到注册模式时立即加载验证码

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 13:50:06 +08:00
540c292d70 feat: 实现Token刷新机制,缩短登录有效期
安全改进:
- Access Token有效期从7天缩短为2小时
- 添加Refresh Token机制(有效期7天)
- 关闭浏览器后较快失效,提升安全性

后端修改(auth.js):
- 添加generateRefreshToken函数生成刷新令牌
- 添加refreshAccessToken函数验证并刷新access token
- 分离ACCESS_TOKEN_EXPIRES和REFRESH_TOKEN_EXPIRES配置

后端修改(server.js):
- 登录时返回refreshToken和expiresIn
- 添加/api/refresh-token接口用于刷新token
- Cookie有效期同步调整为2小时

前端修改(app.js):
- 保存refreshToken到localStorage
- 添加自动刷新定时器(过期前5分钟刷新)
- 页面加载时若token过期自动尝试刷新
- 登出时清除refreshToken和定时器

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 13:46:51 +08:00
1d65e97b04 feat: 注册、重置密码、重发验证邮件添加验证码功能
后端修改:
- 添加通用验证码验证函数 verifyCaptcha()
- /api/register 接口添加验证码验证
- /api/password/forgot 接口添加验证码验证
- /api/resend-verification 接口添加验证码验证

前端修改:
- 注册表单添加验证码输入框和图片
- 忘记密码模态框添加验证码
- 重发验证邮件区域添加验证码输入
- 添加各表单的验证码刷新方法
- 提交失败后自动刷新验证码

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 13:11:03 +08:00
f8c9f8f739 新增独立的邮箱验证和重置密码页面
- 新建 verify.html: 邮箱验证专用页面,简洁美观
- 新建 reset-password.html: 重置密码专用页面,带表单验证
- 两个页面都支持亮色/暗色主题切换
- 更新 index.html 和 app.html 的重定向逻辑
- 旧链接自动重定向到新页面

用户体验改进:不再显示登录窗口背景,专注于当前操作

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 00:09:24 +08:00
4aaf6765eb 首页和登录页支持全局主题
- index.html 添加亮色主题 CSS 变量和样式
- index.html 添加 JS 自动加载全局主题
- app.js 修改 initTheme,未登录时从公开 API 获取全局主题
- 登录页面现在会跟随管理员设置的全局主题

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 00:00:53 +08:00
64268135aa 🔧 改进全局主题设置提示信息
当管理员设置了个人偏好时,提示"你设置了个人偏好,不受全局影响"

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 23:49:06 +08:00
551646244e 🔧 添加全局主题设置调试日志
添加console.log帮助诊断全局主题设置不生效的问题

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 23:45:31 +08:00
de871c1f8d 🐛 修复亮色主题下按钮不可见问题
- 添加 .btn-secondary 亮色主题样式(蓝色半透明背景)
- 添加 .btn-icon 亮色主题样式
- 修复管理员设置页面全局主题按钮显示问题

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 23:42:52 +08:00
39d5e37c2c 🐛 修复亮色主题导航栏文字颜色
- 添加 .nav-item 深色文字颜色
- 修复悬停和激活状态的颜色
- 添加 .user-info 深色文字
- 修复用户头像图标颜色

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 23:35:29 +08:00
265b5bf418 🐛 修复亮色主题下导航栏等组件的样式问题
- 添加亮色主题导航栏样式覆盖(白色半透明背景)
- 修复导航项悬停效果在亮色主题下的显示
- 修复用户信息区域的亮色主题样式
- 添加卡片、表格、模态框、输入框的亮色主题样式

这个修复解决了亮色主题下导航栏变黑、文字不可见的问题。

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 23:33:19 +08:00
0cd8341faf 🐛 修复暗色主题下存储管理区域的样式冲突
- 修复存储管理外层容器的白色渐变背景
- 修复本地存储和SFTP存储卡片的白色背景
- 修复上传进度条的白色背景
- 修复SFTP配置卡片的白色背景
- 统一使用CSS变量实现主题适配

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 23:14:27 +08:00
f12b9b7291 添加主题切换功能:支持暗色/亮色玻璃主题
功能说明:
- 管理员可在系统设置中配置全局默认主题
- 普通用户可在设置页面选择:跟随全局/暗色/亮色
- 分享页面自动继承分享者的主题偏好
- 主题设置实时保存,刷新后保持

技术实现:
- 后端:数据库添加theme_preference字段,新增主题API
- 前端:CSS变量实现主题切换,localStorage缓存避免闪烁
- 分享页:加载时获取分享者主题设置

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 23:02:48 +08:00
138bda9ae5 🎨 完善暗色主题:修复右键菜单、分享页面等
- 修复右键菜单白色背景问题(改为暗色玻璃效果)
- 修复分享成功链接不可见问题(添加绿色高亮)
- 修复媒体预览器白色背景
- 完全重写share.html为暗色主题(与主应用风格统一)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 22:51:24 +08:00
3e2a497cd4 🎨 将app.html全面改为暗色主题
- 添加CSS变量系统(背景色、边框色、文字颜色、强调色)
- 页面背景改为深色渐变效果
- 卡片、弹窗使用毛玻璃效果(backdrop-filter blur)
- 导航栏改为暗色玻璃样式
- 表单、按钮、表格全部适配暗色主题
- 添加自定义滚动条样式
- 统一警告/成功/错误提示框为半透明风格
- 全局替换浅色背景和文字颜色

与index.html保持一致的暗色毛玻璃设计风格

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 22:16:28 +08:00
dc076e7cc6 feat(ui): 重新设计首页为暗色玻璃态风格
新设计特点:
- 暗色主题 + 动态渐变光斑背景
- 玻璃态卡片和导航栏效果
- 简洁两栏布局(文案+功能卡片)
- 网格背景增加科技感
- 固定底部技术栈展示
- 完整响应式适配

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 21:22:14 +08:00
c411ffac19 fix(admin): 调整角色列宽度防止换行 2025-11-27 20:52:31 +08:00
599fa2c550 feat(admin): 用户列表添加角色列
- 新增"角色"列,显示"管理员"或"用户"标签
- 管理员显示紫色渐变背景+皇冠图标
- 普通用户显示灰色背景+用户图标
- 调整列宽适配新增列

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 20:47:47 +08:00
4f29bbe631 feat(admin): 管理员页面改为标签页模式
- 添加5个标签页:概览、设置、监控、用户、工具
- 概览:调试模式开关、服务器存储统计
- 设置:系统设置、SMTP邮件配置
- 监控:健康检测、系统日志
- 用户:用户管理列表
- 工具:上传工具管理

优化管理员页面布局,减少滚动,提升使用体验

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 20:31:26 +08:00
c3bc58a88b feat(admin): 添加系统日志功能
## 新功能

1. **系统日志数据库**
   - 新增 system_logs 表
   - 支持日志级别:debug/info/warn/error
   - 支持日志分类:auth/user/file/share/system/security
   - 记录用户ID、用户名、IP地址、User-Agent

2. **日志记录**
   - 用户注册成功/失败
   - 用户登录成功/失败(密码错误)
   - 系统操作(日志清理等)

3. **管理员API**
   - GET /api/admin/logs - 查询日志(支持分页和筛选)
   - GET /api/admin/logs/stats - 获取日志统计
   - POST /api/admin/logs/cleanup - 清理旧日志

4. **前端界面**
   - 日志列表展示(时间、级别、分类、内容、用户、IP)
   - 筛选功能(级别、分类、关键词搜索)
   - 分页导航
   - 清理旧日志功能

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 19:54:46 +08:00
1dde17bb04 feat(admin): 添加系统健康检测功能
新增管理员健康检测面板,可检测以下配置项:
- 安全配置:JWT密钥、CORS、HTTPS、管理员账号、登录防爆破
- 服务状态:SMTP邮件、数据库连接、存储目录
- 运行配置:反向代理支持、Node环境

修改文件:
- backend/auth.js: 新增 isJwtSecretSecure() 函数
- backend/server.js: 新增 /api/admin/health-check API
- frontend/app.js: 新增健康检测数据和方法
- frontend/app.html: 新增健康检测UI界面

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 19:37:42 +08:00