diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..822c0a0 --- /dev/null +++ b/TODO.md @@ -0,0 +1,82 @@ +# 文件管理系统 - 待办事项 + +## 功能拓展 + +### 文件协作 +- [ ] 文件评论/批注 — 支持对文件添加评论,多人协作讨论 +- [ ] 文件版本管理 — 保留历史版本,支持回滚到指定版本 +- [ ] 文件锁定 — 编辑时锁定文件,防止多人同时修改冲突 + +### 搜索增强 +- [ ] 全文搜索 — 对文档内容建立索引(PDF/Word/TXT),支持内容搜索 +- [ ] 高级筛选 — 按文件类型、大小范围、创建时间、所有者组合筛选 +- [ ] 搜索历史 — 记录用户搜索关键词,支持快速重复搜索 + +### 通知与协作 +- [ ] 文件变更通知 — 关注的文件夹有变更时推送通知 +- [ ] 分享到期提醒 — 分享链接即将过期时通知分享者 +- [ ] 操作审计增强 — 按用户/文件/时间段导出审计报表 + +### 存储增强 +- [ ] 存储用量统计图表 — 按用户/文件类型/时间段统计存储使用趋势 +- [ ] 文件去重 — 基于MD5自动去重,相同文件只存一份 +- [ ] 自动归档 — 超过指定时间未访问的文件自动迁移到冷存储 +- [ ] 存储策略自动切换 — 根据文件大小/类型自动选择存储策略 + +### 安全增强 +- [ ] 文件水印 — 预览/下载时自动添加用户信息水印 +- [ ] 操作二次确认 — 删除/永久删除等危险操作需二次确认(可配置) +- [ ] 登录IP白名单 — 限制可登录的IP范围 +- [ ] 文件加密存储 — 对敏感文件启用服务端加密 + +### 集成能力 +- [ ] WebDAV 服务 — 支持通过 WebDAV 协议挂载为网络磁盘 +- [ ] Office 在线编辑 — 集成 OnlyOffice/ Collabora 实现文档在线编辑 +- [ ] OCR 识别 — 图片/PDF 自动识别文字,支持搜索 +- [ ] 视频缩略图 — 上传视频自动生成封面缩略图 + +### 移动端 +- [ ] H5 分享预览优化 — 分享链接在微信/钉钉内打开的适配 +- [ ] 离线缓存 — PWA 支持,常用文件离线可用 +- [ ] 扫码上传 — 手机扫码直接上传文件到指定目录 + +--- + +## 性能优化 + +### 后端 +- [ ] 数据库查询优化 — 高频查询添加复合索引,减少全表扫描 +- [ ] 连接池调优 — 根据实际并发量调整数据库连接池参数 +- [ ] 缓存层 — 对用户权限、存储策略等热点数据加 Redis 缓存 +- [ ] 异步队列 — 文件转码、通知发送等耗时操作改为消息队列异步处理 +- [ ] API 限流 — 对上传/下载等接口做速率限制,防止滥用 + +### 前端 +- [ ] 虚拟列表 — 文件数量大时使用虚拟滚动,提升渲染性能 +- [ ] 图片懒加载 — 列表中的缩略图按需加载 +- [ ] 接口缓存 — 对文件列表等频繁请求做前端缓存 +- [ ] 打包优化 — 路由懒加载、代码分割,减小首屏体积 + +### 存储 +- [ ] CDN 缓存策略 — 按文件类型设置不同的缓存过期时间 +- [ ] 分片上传优化 — 支持并行上传分片,提升大文件上传速度 +- [ ] 存储压缩 — 对文本类文件启用 GZIP 压缩存储 + +--- + +## 代码质量 + +- [ ] 单元测试 — 核心 service 层添加单元测试覆盖 +- [ ] API 文档自动生成 — 集成 Swagger/OpenAPI 自动生成文档 +- [ ] 错误码规范 — 统一错误码体系,前端根据错误码展示友好提示 +- [ ] 日志规范 — 结构化日志输出,便于 ELK 等日志系统采集 +- [ ] CI/CD — GitHub Actions 自动构建、测试、部署 + +--- + +## 部署运维 + +- [ ] Docker Compose — 一键部署全套环境(Go + MySQL + MinIO + Nginx) +- [ ] 健康检查增强 — 检查数据库/MinIO/磁盘空间等依赖服务状态 +- [ ] 自动备份 — 定时备份数据库和文件,支持远程存储 +- [ ] 灰度发布 — 支持新版本灰度发布,按用户比例切换 diff --git a/server/ctl.bat b/server/ctl.bat new file mode 100644 index 0000000..8c798c6 --- /dev/null +++ b/server/ctl.bat @@ -0,0 +1,63 @@ +@echo off +chcp 65001 >nul +title 程序管理脚本 + +:: ================= 配置区 ================= +:: 设置目标exe文件名 +set "EXE_NAME=server.exe" +:: 设置exe完整路径 (如果exe和bat在同一目录,可使用 %~dp0%EXE_NAME%) +set "EXE_PATH=%~dp0%EXE_NAME%" +:: ========================================= + +:menu +echo. +echo ================================ +echo 程序管理菜单 +echo ================================ +echo 1. 启动程序 +echo 2. 关闭程序 +echo 3. 重启程序 (先关后开) +echo 4. 退出 +echo ================================ +set /p choice="请输入选项 (1-4): " + +if "%choice%"=="1" goto start_prog +if "%choice%"=="2" goto stop_prog +if "%choice%"=="3" goto restart_prog +if "%choice%"=="4" exit +echo 无效选项,请重试 +goto menu + +:start_prog +echo [INFO] 正在检查程序是否已运行... +tasklist /fi "imagename eq %EXE_NAME%" | find /i "%EXE_NAME%" >nul +if %errorlevel% equ 0 ( + echo [WARN] 程序 [%EXE_NAME%] 已经在运行中。 +) else ( + if exist "%EXE_PATH%" ( + echo [INFO] 正在启动: %EXE_PATH% + start "" "%EXE_PATH%" + echo [SUCCESS] 程序已启动。 + ) else ( + echo [ERROR] 未找到文件: %EXE_PATH% + ) +) +pause +goto menu + +:stop_prog +echo [INFO] 正在尝试关闭进程: %EXE_NAME% ... +taskkill /f /im "%EXE_NAME%" >nul 2>&1 +if %errorlevel% equ 0 ( + echo [SUCCESS] 进程已强制关闭。 +) else ( + echo [WARN] 未检测到运行中的进程或关闭失败。 +) +pause +goto menu + +:restart_prog +call :stop_prog +timeout /t 2 /nobreak >nul +call :start_prog +goto menu diff --git a/server/license.json b/server/license.json new file mode 100644 index 0000000..3fbcaa9 --- /dev/null +++ b/server/license.json @@ -0,0 +1 @@ +{"licenseStr":"1RGyDUub844lUuVBpGhxd0ZwX9Tg/B3uWSjT1T3+DoUqiwHUJWxHVD6cLWtFV/9C+YTfS6nA8/578u48ujYWqocM2nbSRQGmzGPgn3Q4B9sgS2G7t0ZBOwJfqkiABL/YimnPSh0Q75Xd8g3+IDYYJyVL+icr/CXfI5yZXnGpRul/17MtMGHulQ8LhKy96/XkUz95fG/uGjgz1jiYeFZmrdXe+yRx5IWmJ+7OsbKFiwxTFeoS/HaZyMidmOGmU74HcG2tt4ocGPiklGCXLDYJeP4nsQpl7BKI1Oi8Z9zT5IOVvRhHZw4zuhFlat96WCxYGdVFsYr3f46qPsPzWzS1mRzTXvFXuF1RAsvXlcpAXxQJHnUBmItl1FEmEPOnxNqyw6Or01EmLuxOz2BYSC4arq2OHw==","productType":"seeyon-filesystem","version":"1.0"} \ No newline at end of file