13 Commits

Author SHA1 Message Date
zzy
35e79e54f1 refactor(vfs): 重构VFS模块,拆分数据访问逻辑与路径解析逻辑
将原先的 `vfs.go` 文件中的功能进行拆分,创建了独立的 DAO 层文件 `vfs_dao.go`
和路径处理文件 `vfs_path.go`,以提升代码结构清晰度和可维护性。

- 将数据库操作相关方法迁移至 `VfsDAO` 结构体中
- 新增 `vfs_dao.go` 文件用于管理底层数据访问对象
- 新增 `vfs_path.go` 文件专门处理路径解析逻辑
- 移除了原 `vfs.go` 中的数据库初始化、用户及节点操作等冗余代码
2025-09-29 00:42:45 +08:00
zzy
429a863b76 feat(bookmark): 添加 Authorization 请求头支持
为 CORS 配置添加 `Authorization` 请求头,以支持携带认证信息的跨域请求。

feat(user-np): 改进错误信息和用户注册流程

- 在注册 VFS 服务失败时返回更详细的错误信息,包括状态码和响应体内容。
- 用户创建失败时返回具体的错误详情,并确保数据库记录被正确回滚。
- 注销用户时先尝试删除 VFS 服务中的相关资源,再执行数据库删除操作。
- 使用 `Unscoped().Delete()` 确保物理删除用户数据。

feat(vfs): 完善用户目录结构及节点创建逻辑

- 创建用户主目录 `/home/username` 及其子目录 `.Recycle_Bin`。
- 调整 `CreateVFSNode` 方法参数类型为值传递。
- 修复创建用户目录时传参不一致的问题。
- 删除用户时递归清理其在 VFS 中的所有节点,并通过代理删除关联的服务节点。

feat(mage): 新增生成 TypeScript 类型定义的任务

新增 `Gen_TS` Mage 任务用于将 OpenAPI 配置文件转换为 TypeScript 类型定义文件,
支持 `vfs`、`bookmark` 和 `user_np` 模块。
2025-09-28 12:28:22 +08:00
zzy
a3033bbf67 feat(vfs): 增强虚拟文件系统删除和查询功能
- 新增递归删除目录及子项的功能,支持 recursive 和 force 操作模式
- 支持通过路径获取文件或目录内容,并完善参数说明和示例
- 完善 VFS API 文档,包括操作模式、权限描述和响应内容
- 优化 GetVFSNode 方法,改为通过 ID 查询节点信息
- 修复部分路径和权限检查的逻辑注释
2025-09-27 22:23:30 +08:00
zzy
cf47ef66c3 feat(user_np): 更新用户认证接口路径与实现
- 修改登录接口路径为 /auth/user/{username}/login,并更新对应处理函数
- 修改注册接口路径为 /auth/user/{username},并更新对应处理函数
- 将修改密码接口从 PUT /auth/password 改为 PATCH /auth/user/{username}
- 新增删除用户接口 DELETE /auth/user/{username}
- 新增获取用户信息接口 GET /auth/user/{username}/info
- 更新请求体结构,移除冗余的 username 字段,使用路径参数传递用户名
- 实现 DeleteUser、UpdatePassword 等新接口逻辑
- 调整 OpenAPI 文档中各接口的 operationId 和参数定义
2025-09-27 16:25:37 +08:00
zzy
9cab95c0f7 feat(bookmark): 添加 401 和 403 响应引用并完善错误定义
在 bookmark.yaml 配置文件中,为多个接口路径添加了 '401' 和 '403' 状态码的响应引用,
分别指向 components 中定义的 Unauthorized 和 Forbidden 响应。同时在 components
部分补充了 Forbidden 响应的定义,增强了 API 文档的完整性与规范性。

feat(user_np): 新增用户信息接口与基础错误结构定义

在 user_np.yaml 中新增了 /auth/info 路径下的 GET 和 PUT 接口,用于获取和保存用户信息。
同时,在 components 中定义了 ServerInternalError 响应和 Error 结构体,统一错误返回格式,
提升接口一致性与可维护性。

feat(vfs): 调整内容类型为 text/plain 并增强节点名称校验逻辑

将 vfs.yaml 中涉及二进制流传输的内容类型由 application/octet-stream 修改为 text/plain,
简化数据处理方式。同时在 vfs.go 模型中新增 CheckNameValid 方法,用于校验节点名称合法性,
防止非法字符(如斜杠)造成路径问题。

refactor(bookmark): 优化 API Key 验证逻辑并暴露更新时间字段

重构 BookMarksImpl 的 validateApiKey 函数,简化认证判断流程,并将 adminToken 从指针改为字符串常量。
此外,在 bookmarkModel2Res 函数中新增 UpdatedAt 字段,使书签响应包含更新时间信息。

feat(user_np): 实现用户信息相关接口占位函数

在 UserNPImpl 中新增 GetUserInfo 和 SaveUserInfo 两个方法的占位实现,为后续业务逻辑开发做好准备。

refactor(vfs): 使用文本请求体并加强服务节点操作校验

修改 vfs_impl.go 中读取请求体的方式,由 io.Reader 改为直接解引用文本内容,提升处理效率。
更新 CreateVFSNode、GetVFSNode 和 UpdateVFSNode 方法中对请求体和响应体的处理逻辑,
统一使用文本格式,增强代码一致性与健壮性。

feat(vfs): 为书签代理服务添加认证 Token 支持

在 vfs_bookmark.go 中为 VfsBookMarkService 结构体增加 token 字段,并在调用 bookmark 服务各接口时,
通过 HTTP 请求头设置 X-BookMark-Token,确保服务间通信的安全性与权限控制。
2025-09-26 14:42:22 +08:00
zzy
72bd01d23b ```
feat(config): 移除vfs_config.yaml配置文件

移除vfs_config.yaml文件,该文件包含服务器配置、服务端点和VFS设置。
更新.gitignore文件以忽略*.yaml文件。
```
2025-09-25 16:16:25 +08:00
zzy
b2cc27b8f5 refactor(bookmark): 重构 bookmark 服务生成配置和内部引用
将 bookmark 和 user_np 服务的生成配置分离为 server 和 client 包,
并更新了相应的导入路径。同时更新了 OpenAPI 配置文件中的包名、输出路径及
启用 strict-server 模式以增强类型安全。

此外,同步更新了 VFS 服务的客户端和服务端生成配置,并完善了其 OpenAPI
错误响应定义与二进制内容支持,增强了 API 的规范性和健壮性。

修复了部分权限校验逻辑,并调整了中间件注册方式以适配新的严格模式接口。
2025-09-25 16:15:34 +08:00
zzy
24f238f377 refactor(bookmark): 重构书签服务入口文件并整合用户权限功能
将 bookmark.go 重命名为 main.go,并调整包引用路径。将 bookmarks 和 user_np
两个模块的处理逻辑合并到同一个服务中,统一注册路由。同时更新了相关 API
的引用路径,确保生成代码与内部实现正确绑定。

此外,移除了独立的 user_np 服务入口文件,其功能已整合至 bookmark 服务中。

配置文件中调整了 user_np 和 vfs 服务的端口及部分接口定义,完善了用户
相关操作的路径参数和请求体结构。
2025-09-25 09:50:35 +08:00
zzy
1e81e603de feat(bookmark): 初始化书签服务并配置路由与权限控制
新增书签服务主程序,使用 Gin 框架搭建 HTTP 服务器,并注册书签相关接口处理器。
配置 CORS 中间件以支持跨域请求。服务监听端口为 8081。

feat(user_np): 初始化用户权限服务并注册认证接口

新增用户权限服务主程序,使用 Gin 框架搭建 HTTP 服务器,并注册登录、注册及修改密码等接口处理器。
服务监听端口为 8082。

refactor(config): 重构 OpenAPI 配置文件结构并拆分模块

将原有合并的 OpenAPI 配置文件按功能模块拆分为 bookmark 和 user_np 两个独立目录,
分别管理各自的 server、client 及 API 定义文件,便于后续维护和扩展。

refactor(vfs): 调整虚拟文件系统 API 接口路径与参数定义

更新 VFS API 配置文件,修改部分接口路径及参数结构,
如将文件路径参数由 path 转为 query 参数,并优化响应结构体定义。
2025-09-23 21:52:51 +08:00
zzy
60d6628b0d ```
feat(bookmark): 添加文件夹树结构导入导出接口

新增 `/bookmarks/v1/folder/serial` 接口,支持文件夹树结构的压缩导出与解压导入。
同时完善了相关响应结构体定义,如 ImportResponse 等。

refactor(bookmark): 重命名配置文件并调整字段命名

将 `config/api.yaml` 重命名为 `config/bookmark.yaml`,并统一将 parent_path_id 字段
更名为 parent_id。此外,更新 API 鉴权头名称为 X-BookMark-Token。

feat(bookmark): 实现文件夹挂载管理功能

新增以下三个接口用于管理文件夹挂载:
- GET `/bookmarks/v1/folder/{id}/mount` 获取挂载信息
- POST `/bookmarks/v1/folder/{id}/mount` 挂载文件夹
- DELETE `/bookmarks/v1/folder/{id}/mount` 取消挂载

新增相关结构体定义:MountResponse、MountInfo。

feat(vfs): 初始化虚拟文件系统 API 配置

新增 `config/vfs.yaml` 和 `config/vfs_cfg.yaml` 配置文件,定义 VFS 相关接口和代码生成规则。
接口包括文件/目录的创建、读取、更新和删除操作,并引入新的安全头 X-VFS-Token。

chore(config): 忽略 data 目录并更新生成路径

.gitignore 中新增忽略 data/ 目录。同时更新 bookmark 和 vfs 的代码生成输出路径分别为
`./gen/bookmarks/gen.go` 和 `./gen/vfs/gen.go`。

chore(deps): 引入 casbin、gopsutil 等依赖库

go.mod 中新增 casbin 权限控制、gopsutil 系统监控等相关依赖。
```
2025-09-23 01:33:50 +08:00
zzy
6e513dbeb8 fix(bookmark): 更新书签模型字段为指针类型以支持可选字段
将 Bookmark 模型中的 Link、Detail 和 Description 字段修改为指针类型,
使其在数据库中可以为 NULL,并更新了对应的请求和响应处理逻辑。
同时修复根目录 ParentPathID 的初始化值为 -1。
此外,测试用例中暂时注释掉时间更新的断言并添加 FIXME 注释。
主程序监听地址从 127.0.0.1 改为 localhost。
2025-09-21 20:59:51 +08:00
zzy
36b311ff86 ```
feat(bookmark): 实现书签和文件夹的增删改查功能

- 添加 GetFolderDefaultRoot 方法用于获取默认根文件夹
- 实现 bookmark 和 folder 的请求/模型/响应转换函数
- 完善 CreateBookmark、CreateFolder、DeleteBookmark、DeleteFolder 等接口逻辑
- 支持删除空文件夹,非空文件夹禁止删除
- 修复根文件夹创建逻辑并添加错误处理
- 删除未实现的示例路由和无用代码

build: 引入 mage 构建工具支持多平台编译

- 添加 magefile.go 实现跨平台构建脚本
- 更新 go.mod 和 go.sum 引入 github.com/magefile/mage 依赖
- 在 README 中补充 mage 使用说明和 VSCode 配置

docs: 更新 README 并添加 mage 使用示例

- 添加 govulncheck 和 mage 构建相关文档
- 补充 VSCode gopls 配置说明

ci: 更新 .gitignore 忽略 bin 目录和可执行文件

- 添加 bin/ 到忽略列表
- 统一忽略 *.exe 和 *.sqlite3 文件

refactor(main): 优化主函数启动逻辑与日志输出

- 移除示例 helloworld 路由
- 设置 gin 为 ReleaseMode 模式
- 统一服务监听地址为变量,并增加启动日志提示
```
2025-09-21 15:45:37 +08:00
zzy
7ff8591be8 ```
feat(api): 初始化项目基础结构与API定义

新增 `.gitignore` 文件,忽略编译输出、生成代码及数据库文件。
新增 `README.md`,包含 Gin 框架和 Swagger 工具的安装与使用说明。
新增 `config/api.yaml`,定义 bookmarks 相关的文件夹与书签操作的 OpenAPI 3.0 接口规范。
新增 `config/cfg.yaml`,配置 oapi-codegen 工具生成 Gin 服务和模型代码。
新增 `go.mod` 和 `go.sum` 文件,初始化 Go 模块并引入 Gin、GORM、SQLite 及 oapi-codegen 等依赖。
```
2025-09-21 00:20:29 +08:00